Skip to content

Commit ad8a118

Browse files
committed
feat: 49. Group Anagrams
1 parent bb30d81 commit ad8a118

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/**
2+
* https://leetcode.com/problems/group-anagrams/description/
3+
* Runtime: 27ms, Memory: 64.26MB
4+
*
5+
* Time Complexity: O(n * m * log m)
6+
* Space Complexity: O(n * m)
7+
*
8+
* ์ ‘๊ทผ
9+
* anagrams ๊ด€๊ณ„์ธ ๋‹จ์–ด๋Š” ์ •๋ ฌ ์‹œ ๋ชจ๋‘ ๋™์ผํ•œ ๋‹จ์–ด๊ฐ€ ๋œ๋‹ค.
10+
* ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ •๋ ฌ๋œ ๋‹จ์–ด๊ฐ€ key ๊ฐ’์ด ๋˜๊ณ , str์„ ์ •๋ ฌํ–ˆ์„ ๋•Œ key๊ฐ’๊ณผ ๋™์ผํ•œ ๊ฒฝ์šฐ value๊ฐ€ ๋˜๋„๋ก ์ถ”๊ฐ€.
11+
*/
12+
13+
function groupAnagrams(strs: string[]): string[][] {
14+
let answer = [];
15+
const anagramMap = new Map<string, string[]>();
16+
17+
for (let str of strs) {
18+
const key = str.split("").sort().join(""); // O(m * log m)
19+
if (!anagramMap.has(key)) {
20+
anagramMap.set(key, []);
21+
}
22+
anagramMap.get(key)?.push(str);
23+
}
24+
25+
anagramMap.forEach((value) => {
26+
answer.push(value);
27+
});
28+
29+
return answer;
30+
}
31+
32+
groupAnagrams(["eat", "tea", "tan", "ate", "nat", "bat"]);

0 commit comments

Comments
ย (0)