[LeetCode | Javascript] Valid Anagram

박기영·2023년 8월 31일

LeetCode

목록 보기
25/41

solution

/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function(s, t) {
    if(s.length !== t.length){
        return false;
    }

    let hashMap = {};

    for(let i = 0; i < s.length; i++){
        if(hashMap[s[i]]){
            hashMap[s[i]]++;
        } else {
            hashMap[s[i]] = 1;
        }
    }

    for(let i = 0; i < t.length; i++){
        if(hashMap[t[i]]){
            hashMap[t[i]]--;
            continue;
        }

        return false;
    }

    return true;
};

st는 서로의 문자열을 모두 사용하여 재조합할 수 있는 관계이다.
따라서, 문자열의 길이가 다르다면 false가 된다.

문자열의 길이가 같다면 연산을 시작해볼 수 있겠다.
일반적인 hash map 문제와 다를게 없다.
우선, 한 쪽 문자열을 hash map으로 만든다.
이 때 문자열은 key가 되며, 개수는 value가 된다.
이후, 다른 문자열을 순회하며 hash map에 있는 key가 존재할 때마다 value를 1씩 감소시킨다.
만약, 없는 문자열(value가 0인 경우 or key가 없는 경우)을 사용하려고 한다면 false를 반환한다.
이를 모두 통과하면 true를 반환한다.

profile
나를 믿는 사람들을, 실망시키지 않도록

0개의 댓글