var firstUniqChar = function (s) {
let obj = {};
for (let i = 0; i < s.length; i++) {
if (obj[s[i]]) obj[s[i]]++;
else obj[s[i]] = 1;
}
let answer = '';
for (let [key, value] of Object.entries(obj)) {
if (value === 1) {
answer = key;
break;
}
}
return answer ? s.indexOf(answer) : -1;
};
HashMap의 기초 문제라고 볼 수 있다. 중복된 문자가 있다면 obj
객체에서 해당 key
에 해당하는 value
값은 1보다 클 것이다.
그 후 Object.entries(obj)
를 이용한 반복문을 사용해 반복이 되지 않는, 즉 value
가 1
인 key
가 있다면 answer
변수에 그 값을 담아주고 break
를 통해 반복문을 종료해준다.
이후 indexOf
메서드를 사용해 s
에 해당 answer
에 해당하는 인덱스가 있다면 그 인덱스를 return
하고, 없다면 -1
을 return
해주면 된다.
수정, 지적을 환영합니다!
https://leetcode.com/problems/first-unique-character-in-a-string/