지문은 링크에서 확인해주세요.
/**
* @param {string} s
* @param {string} t
* @return {boolean}
* Runtime : 71 ms
* Memory : 42.08 MB
*/
var isAnagram = function(s, t) {
if(s.length !== t.length) {
return false;
}
const hash = {}
for(let i = 0; i < s.length; i++){
const char = s[i];
if(hash[char]){
hash[char] += 1;
} else {
hash[char] = 1
}
}
for(let i = 0; i < t.length; i++){
const char = t[i];
if(!hash[char]) {
return false;
}
hash[char] -= 1;
}
return true
};
직전 문제의 해답 [Hash Table] Ransom Note을 그대로 사용하되, for문 탈출 조건문은 가독성을 높였습니다.
해답의 전문은 링크를 확인해주세요.
var isAnagram = function(s, t) {
if (s.length !== t.length) {
return false;
}
var freq = new Array(26).fill(0);
for (var i = 0; i < s.length; i++) {
freq[s.charCodeAt(i) - 'a'.charCodeAt(0)]++;
freq[t.charCodeAt(i) - 'a'.charCodeAt(0)]--;
}
for (var i = 0; i < freq.length; i++) {
if (freq[i] !== 0) {
return false;
}
}
return true;
};
알파벳 개수만큼의 배열을 활용하여, anagram 이라면 해당 배열의 요소는 모두 0으로 돌아와야하는 해답입니다.