문제가 무지 짧다!
어떠한 string s 가 주어질 때 s의 철자중에서 처음으로 중복이 없는 철자의 인덱스를 리턴하는 문제이다
만일 중복되지 않는 문자가 없다면 -1을 리턴하면 된다
Example을 보자
일단 s가 만약 알파벳 1개짜리 문자열이라면 바로 0을 리턴해주면 된다
문제를 보며 생각해낸 방법으로는
문자열을 순회하면서 객체에다가 문자:갯수 값을 넣어주기로 했다
let dic = {};
for(let i = 0; i < s.length; i++) {
if(dic[s[i]]) {
dic[s[i]] += 1;
}else {
dic[s[i]] = 1;
}
만약 중복된 알파벳이라면 객체에 할당 될때 그 알파벳의 갯수값이 추가되어 올라 갈것이다.
그 후 중복되지 않는 문자가 제일 처음 나타날때의 인덱스를 구하는것이므로
객체안의 알파벳의 갯수가 1인 알파벳의 인덱스를 바로 리턴하면 된다
만약 갯수가 1인 알파벳 키가 없다면 -1을 리턴한다
const firstUniqChar = function(s) {
if (s.length === 1) return 0;
let dic = {};
for(let i = 0; i < s.length; i++) {
if(dic[s[i]]) {
dic[s[i]] += 1;
}else {
dic[s[i]] = 1;
}
}
for(char of s) {
if(dic[char] === 1) {
return s.indexOf(char);
}
}
return -1
};
submit을 해보니
정답이었다!