두 가지 문자열이 주어졌을때 서로 anagram인지 판별하는 문제다. 문자열의 각 문자 순서만 다르고 문자 구성은 같은것을 anagram이라고 한다. olleh와 hello 처럼..
1. split, sort, join 으로 각 문자열을 정렬해주고 두 문자열이 같은지 확인
2. 해쉬맵을 이용하여 첫번째 문자열에 등장하는 문자의 빈도수를 기록한뒤 두 번째 문자열에서 각 문자를 하나씩 보면서 해쉬맵에서 찾을때마다 빈도수를 1씩 뺀다. 만약 해쉬맵에 없는 문자가 등장하거나 해쉬맵에 있어도 빈도수가 이미 0이면 anagram이 아니게 된다.
function splitSortAndJoin(str) {
return str.split('').sort().join('');
}
function solution(before, after) {
return splitSortAndJoin(before) === splitSortAndJoin(after) ? 1 : 0;
}
function isAnagram(before, after) {
const hashMap = {}
for(char of before) {
if(!hashMap[char]) {
hashMap[char] = 1
} else {
hashMap[char] ++
}
}
for(char of after) {
if(!hashMap[char]) {
return false
} else {
hashMap[char] --
}
}
return true
}
function solution(before, after) {
return isAnagram(before, after) ? 1 : 0
}
반응형
'알고리즘 문제 풀이' 카테고리의 다른 글
[TIL] Javascript 알고리즘 100일 챌린지 22번째 도전 (0) | 2023.05.24 |
---|---|
[TIL] Javascript 알고리즘 100일 챌린지 21번째 도전 (0) | 2023.05.23 |
[TIL] JavaScript 알고리즘 100일 챌린지 19번째 도전 (0) | 2023.05.20 |
[TIL] JavaScript 알고리즘 100일 챌린지 18번째 도전 (0) | 2023.05.17 |
[TIL] JavaScript 알고리즘 100일 챌린지 17번째 도전 (0) | 2023.05.16 |