작성
·
311
·
수정됨
0
let a = "AbaAeCeo";
let b = "baeeACA";
아나그램 찾는 문제에서 두 문자는 문자의 개수는 각가 다를 수 있지만 동일한 문자를 사용한다는 전제조건 하에 아나그램 여부를 찾는 건가요?
위와 같이 a에는 'o'가 있고 b에는 없을때 yes를 리턴합니다
let a = "AbaAeCe";
let b = "baeeACAo";
위와 같이 b에는 있고 a에는 있을때 no를 리턴합니다.
function solution(str1, str2) {
let hs1 = new Map();
let hs2 = new Map();
let answer = true;
for (let x of str1) {
if (!hs1.has(x)) {
hs1.set(x, 1);
} else {
hs1.set(x, hs1.get(x) + 1);
}
}
for (let x of str2) {
if (!hs1.has(x) || hs1.get(x) === 0) return "No";
hs1.set(x, hs1.get(x) - 1);
}
return answer;
}
let a = "AbaAeCe";
let b = "baeeACAo";
console.log(solution(a, b));
답변 1
1
지나가다 답변합니다
아나그램 문제 보시면, "길이가 같은 두 개의 단어가 주어지면 두 단어가 아나그램인지 판별하는 프로그램을 작성하세요."라고 하니까 길이가 같다는 전제 조건이 있는 게 맞습니다
만약 그 전제 조건이 없다면, 솔루션 함수 맨 앞에 if(str1.length!==str2.length) return "NO"; 한 줄만 추가해 주면 되겠네요