1.RegExp - \w와 \W는 a부터 z, A부터 Z, 0부터 9 _ 등의 ASCII 문자에만 일치한다.
2. /[^\w]/g 이 부분이 잘 이해가지 않지만 특수문자를 없애려는 것 같다
3. helper 함수를 만든다
4. 길이를 비교한다
5. for loop를 돌려서 string을 비교한다
function anagrams(stringA, stringB) {
const aCharMap = buildCharMap(stringA);
const bCharMap = buildCharMap(stringB);
if (Object.keys(aCharMap).length !== Object.keys(bCharMap).length){
return false;
}
for (let char in aCharMap) {
if (aCharMAp[char] !== bCharMap[char]) {
return false;
}
}
return true;
}
function buildCharMap(str) {
const charMap = {};
for (let char of str.replace(/[^\w]/g, '').toLowerCase()) {
charMap [char] = charMap[char] +1 || 1;
}
return charMap;
}
function anagrams(stringA, stringB) {
return cleanString(stringA) === cleanString(stringB);
}
function cleanString(str) {
return str.replace(/[^\w]/g,'').toLowerCase().split('').sort().join('');
}