Skip to content

Commit 2236c56

Browse files
committedJan 6, 2025
add: solve #236 Group Anagrams with ts
·
v4.15.0v3.5.0
1 parent fcf70c9 commit 2236c56

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed
 

‎group-anagrams/Yjason-K.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/**
2+
* 주어진 문자열 배열에서 Anagram을 그룹화 해서 배열 만들기
3+
* @param {string[]} strs - 문자열 배열
4+
* @returns {string[][]} Anagram을 그룹 배열
5+
*
6+
* 문자열들을 정렬해서 Map에 담아서 존재하면 그 때의 문자를 value로 추가
7+
* 존재하지 않으면 새로운 배열을 value로 추가
8+
*
9+
* 시간 복잡도: O(N * M * log(M))
10+
* - N은 문자열 배열의 길이
11+
* - M은 각 문자열의 평균 길이 (정렬 시간 때문)
12+
* 공간 복잡도: O(N * M)
13+
* - 해시맵에 저장되는 문자열 그룹 때문
14+
*/
15+
function groupAnagrams(strs: string[]): string[][] {
16+
const anagramMap: Map<string, string[]> = new Map();
17+
for (const str of strs) {
18+
19+
// 정렬된 문자열
20+
const sortedStr = str.split('').sort().join('');
21+
22+
// 정렬된 문자열이 존재하는 않는 경우
23+
if (!anagramMap.has(sortedStr)) {
24+
anagramMap.set(sortedStr, [])
25+
}
26+
27+
// 정렬된 문자열을 key로 하는 value str 추가
28+
anagramMap.get(sortedStr)?.push(str);
29+
}
30+
31+
// anagramMap에서 values만 배열로해서 출력
32+
return Array.from(anagramMap.values())
33+
}

0 commit comments

Comments
 (0)
Please sign in to comment.