Skip to content

Commit d65d7b9

Browse files
committed
group anagrams
1 parent 1cf6272 commit d65d7b9

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
class Solution {
2+
/**
3+
* ๊ฐ ๋ฌธ์ž์—ด์˜ ์•ŒํŒŒ๋ฒณ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ํ‚ค๋กœ ์‚ฌ์šฉํ•ด
4+
* ๊ฐ™์€ ์• ๋„ˆ๊ทธ๋žจ๋ผ๋ฆฌ ๊ทธ๋ฃนํ™”ํ•œ๋‹ค.
5+
*
6+
* ์‹œ๊ฐ„ ๋ณต์žก๋„: O(S)
7+
* ๊ณต๊ฐ„ ๋ณต์žก๋„: O(n)
8+
*
9+
* S: ๋ชจ๋“  ๋ฌธ์ž์—ด ๊ธธ์ด์˜ ํ•ฉ
10+
* n: ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜
11+
*/
12+
public List<List<String>> groupAnagrams(String[] strs) {
13+
Map<String, List<String>> groups = new HashMap<>();
14+
15+
for (String word : strs) {
16+
int[] frequency = new int[26];
17+
18+
// ์•ŒํŒŒ๋ฒณ๋ณ„ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.
19+
for (int i = 0; i < word.length(); i++) {
20+
frequency[word.charAt(i) - 'a']++;
21+
}
22+
23+
// ๋นˆ๋„ ๋ฐฐ์—ด์„ ๊ฐ™์€ ๋‚ด์šฉ๋ผ๋ฆฌ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
24+
String key = Arrays.toString(frequency);
25+
26+
// ๊ฐ™์€ ํ‚ค๋ฅผ ๊ฐ€์ง„ ๋ฌธ์ž์—ด์„ ๋™์ผํ•œ ๊ทธ๋ฃน์— ์ถ”๊ฐ€ํ•œ๋‹ค.
27+
groups.computeIfAbsent(key, ignored -> new ArrayList<>())
28+
.add(word);
29+
}
30+
31+
return new ArrayList<>(groups.values());
32+
}
33+
}

0 commit comments

Comments
ย (0)