두 문자를 비교하여 동일할 시 true를 반환하고 그렇지 않으면 false를 반환하세요.
'use strict'
function validAnagram(first, second) {
if (first.length !== second.length) return false;
const lookup = {};
for (let i = 0; i < first.length; i++) {
let letter = first[i];
lookup[letter] = ++lookup[letter] || 1;
}
for (let i = 0; i < second.length; i++) {
let letter = second[i];
if(!lookup[letter]) return false;
else lookup[letter] -= 1;
}
return true;
}
validAnagram('test', 'test')
; // true
validAnagram('2222', 'test')
; // false
- 비교할 두 문자를 각각 매개변수로 전달받고 가장 먼저 문자열 길이 비교를 통해 두 문자의 길이가 서로 일치하지 않을 경우
false
를 반환합니다.- 룩업 테이블로 활용할 상수 객체 lookup을 빈 객체로 초기화합니다.
- 첫 번째 매개변수로 전달받은 문자열을 반복문으로 순회하면서 각각의 문자를 letter 변수에 담아 lookup 테이블에 해당 문자를 키로 하여 값이 존재할 경우 1을 추가합니다.
- 첫 번째 반복문의 결과로 첫 번째 문자열의 각 문자들이 lookup 객체에 포함되어 있으므로 두 번째 매개변수로 전달받은 문자열에 포함된 각각의 문자들의 lookup 객체에 포함되어 있는지 비교합니다.
- lookup 객체에 문자가 포함되어 있지 않으면 일치하지 않은 것이므로
false
를 반환하여 반복문을 종료하고 문자가 포함되어 있다면 value값에 1을 차감하여 줍니다. 모든 반복문을 순회하였다면 매개변수로 전달받은 두 문자열이 일치한 것이므로true
를 반환합니다.