js_애너그램 예제

dev.dave·2023년 7월 24일

Javascript

목록 보기
36/167

// 애너그램 판별하기
//두단어의 글자 나열 순서는 다르지만, 구성이 일치할시 -> 애너그램!

//예시
//LISTEN <-> SILENT
//이런식임..

//방법1
//split, sort, join 순서대로 쓸꺼고

//방법2
//hashmap 오브젝트를 생성해서, 각각의 글자를 검사하고, 취합 빈도를 저장, ....

/////////////////////////////////////////////////////////////
const stringA = "listenㅜ";
const stringB = "silㅜent";
//
//#1 split, sort, join
//
//순서는 "listen" -> split()사용해서 문자열을 쪼개서 배열로만들고 -> 그리고 그 배열을 sort()사용해서 a,b,c순서대로 정렬한다 -> 그다음 join()함수 사용해서 문자열로 다시 변환을 해준다. 그래서 최종 리턴된 문자열 값이 stringA 와 stringB와 같냐를 비교를해서 애너그램이 맞는지아닌지르 ㄹ확인!
//
//일단 스트링a 와 스트링b가 문자열 길이가 같냐 안같냐를 확인해봐야됨.
// function isAnagram(strA, strB) {
// if (strA.length !== strB.length) {
// return false;
// } // 같지 않다면, 애너그램을 형성할 수 없으니까, 바로 false를 리턴해주는거죠.
// //이제 둘 비교를 할 차례, 일단 split으로 배열로 전환을 하고,sort로 순차적으로 a,b,c순서대로 정렬을 하죠,다음은 join으로 문자열로 변환해줍니다.
// return strA.split("").sort().join("") === strB.split("").sort().join("");
// }
//console.log(isAnagram(stringA, stringB)); // true 즉. 결과값은 같다. 즉, 애너그램이다.
/////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////
//
//#2 map = {} 해쉬 맵
//
//일단 해쉬맵 오브젝트를 생성을 해서, 여기 각각 문자열들의 검사를 하고, 출현 빈도를 해쉬맵에 key로 저장을 하고,그다음 첫번째 두번쨰 문자열이 같나 안같나 를 확인해봄!
//
function isAnagram(strA, strB) {
if (strA.length !== strB.length) {
return false;
}
const hashMap = {}; //해쉬맵 일단 생성 해주고,
for (let char of strA) {
hashMap[char] = hashMap[char] ? hashMap[char] + 1 : 1;
} // srtA(문자열)를 일단 해쉬값으로 만드는 거에요, //{l:1, i:1, s:1} 이런식으로, 만들고나서,

for (const char of strB) {
if (!hashMap[char]) {
return false;
}
hashMap[char]--;
}
return true;
}
console.log(isAnagram(stringA, stringB));

profile
🔥개인 메모 / 다른블로그 자료 참조 / 다른블로그 자료 퍼옴 (출처표기) /여기저기서 공부 했던 내용 개인메모 & 참고 / 개인 기록 용도 블로그 입니다.🔥

0개의 댓글