validAnagram이라는 함수는 두 문자열을 파라미터로 받아서 두 문자열이 애너그램 관계인지 확인하여 true, false를 반환하는 함수이다.
(알파벳은 소문자인 경우만 고려할 것)
예시
validAnagram('', '') // true
validAnagram('aaz', 'zza') // false
validAnagram('anagram', 'nagaram') // true
validAnagram("rat","car") // false) // false
function validAnagram(first, second){
if(first.length !== second.length){
return false;
}
const firstObj = {};
const secondObj = {};
for(let val of first){
firstObj[val] = (firstObj[val]||0)+1;
}
for(let val of second){
secondObj[val] = (secondObj[val]||0)+1;
}
for(let key in firstObj){
if(!secondObj[key]){
return false;
}
if(secondObj[key] !== firstObj[key]){
return false;
}
}
return true;
}
//만약 앞의 문제를 다음과 같이 풀었다면
//1000개인 경우에 1000*1000 만큼의 계산이 필요하나
//solution 대로 풀면 1000 + 1000 의 계산만 하면 된다
function same (first, second){
if(first.length !== second.length){
return false;
}
for(let i=0;i<first.length;i++){
let correctIdx = second.indexOf(first[i])
//indexOf는 여기서 중첩된 루프의 역할을 하고 있음
if(correctIdx === -1){
return false;
}
second.splice(correctIdx,1);
}
return true;
}
출처 Udemy JavaScript 알고리즘 & 자료구조 마스터클래스