anagram인지 판단하는 문제이다.
anagram은 각 String의 구성요소들의 순서만 바꾸어서 생성한 다른 String을 의미한다.
var isAnagram = function(s, t) {
if(s.length !== t.length) return false;
const mapper = {};
for(const letter of s.split("")){
if(!mapper[letter]){
mapper[letter] = 1;
}else{
mapper[letter] += 1;
}
}
for(let i = 0; i < t.length; i++){
const letter = t[i];
if(mapper[letter] < 0 || mapper[letter] === undefined){
return false;
}else{
mapper[letter] -= 1;
}
}
for(let key in mapper){
if(mapper[key] > 0){
return false;
}
}
return true;
};
가독성 좋게 ES6방식으로 생성하면 아래와 같다. 하지만 소요시간은 더 많이 걸린다.
var isAnagram = function(s, t) {
const sortedS = s.replace(/[^\w]/g, "").toLowerCase().split("").sort();
const sortedT = t.replace(/[^\w]/g, "").toLowerCase().split("").sort();
const res = sortedS.length === sortedT.length &&
sortedS.every((value, index) => value === sortedT[index]);
return res
};
'Algorithm' 카테고리의 다른 글
[PCCP 기출문제] 2번 석유시추(lv2, js) (0) | 2023.12.28 |
---|---|
[leetcode] 258. Add Digits (feat. JS) (0) | 2023.11.03 |
[leetcode] 125. Valid Palindrome (feat. JS) (0) | 2023.11.01 |
124 나라의 숫자 (0) | 2022.04.08 |
완전탐색 - 양과 늑대(2022 KAKAO BLIND RECRUITMENT) (0) | 2022.04.08 |