Skip to content

Commit 833873a

Browse files
committed
group-anagram
1 parent c14f3ec commit 833873a

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

โ€Žgroup-anagrams/taekwon-dev.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* ์‹œ๊ฐ„ ๋ณต์žก๋„: O (m * n)
3+
* - m: ๋ฌธ์ž์—ด ๊ฐœ์ˆ˜
4+
* - n: ๊ฐ ๋ฌธ์ž์—ด ๊ธธ์ด
5+
* - ๊ฐ ๋ฌธ์ž์—ด์—์„œ ๋นˆ๋„์ˆ˜ ๊ณ„์‚ฐ์„ ์œ„ํ•ด O(n)์ด ์†Œ์š”๋˜๋Š”๋ฐ, ์ด๋ฅผ ๊ฐ ๋ฌธ์ž์—ด๋งˆ๋‹ค ์ง„ํ–‰
6+
*
7+
* ๊ณต๊ฐ„ ๋ณต์žก๋„: O (m * n)
8+
* - m: ๋ฌธ์ž์—ด ๊ฐœ์ˆ˜
9+
* - n: ๊ฐ ๋ฌธ์ž์—ด ๊ธธ์ด
10+
* - ์ฃผ์–ด์ง„ ๋ชจ๋“  ๋ฌธ์ž์—ด์ด ๋ชจ๋‘ ์„œ๋กœ anagram์„ ๊ตฌ์„ฑํ•˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ, ๋ชจ๋“  ๋ฌธ์ž์—ด ์ˆ˜๋งŒํผ ํ•„์š”ํ•จ
11+
*/
12+
class Solution {
13+
public List<List<String>> groupAnagrams(String[] strs) {
14+
Map<String, List<String>> map = new HashMap<>();
15+
16+
for (String str: strs) {
17+
int[] count = new int[26];
18+
for (int i = 0; i < str.length(); i++) {
19+
count[str.charAt(i) - 'a']++;
20+
}
21+
22+
StringBuilder sb = new StringBuilder();
23+
for (int i = 0; i < 26; i++) {
24+
sb.append("^").append(count[i]);
25+
}
26+
String candidate = sb.toString();
27+
if (!map.containsKey(candidate)) {
28+
map.put(candidate, new ArrayList<>());
29+
}
30+
map.get(candidate).add(str);
31+
}
32+
33+
return new ArrayList<>(map.values());
34+
}
35+
}

0 commit comments

Comments
ย (0)