[LeetCode] First Unique Character in a String

준규·2022년 8월 15일
0

문제가 무지 짧다!

어떠한 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을 해보니

정답이었다!

profile
안녕하세요 :)

0개의 댓글

Powered by GraphCDN, the GraphQL CDN