Skip to content

Commit bf7b237

Browse files
committed
pass problem 49 - group anagrams
1 parent b053be5 commit bf7b237

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package hash_table.group_anagrams;
2+
3+
import java.util.ArrayList;
4+
import java.util.HashMap;
5+
import java.util.List;
6+
7+
/**
8+
* @author Bota5ky
9+
* @link <a href="https://leetcode.cn/problems/group-anagrams/">49. 字母异位词分组</a>
10+
* @since 2023-11-03 18:56
11+
*/
12+
class Solution {
13+
public List<List<String>> groupAnagrams(String[] strs) {
14+
var map = new HashMap<String, ArrayList<String>>();
15+
for (String str : strs) {
16+
var key = generateKey(str);
17+
var list = map.getOrDefault(key, new ArrayList<>());
18+
list.add(str);
19+
map.put(key, list);
20+
}
21+
var res = new ArrayList<List<String>>();
22+
map.forEach((k,v) -> res.add(v));
23+
return res;
24+
}
25+
26+
private String generateKey(String str) {
27+
var chars = new int[26];
28+
for (int i = 0; i < str.length(); i++) {
29+
chars[str.charAt(i) - 'a']++;
30+
}
31+
var sb = new StringBuilder();
32+
for (int i = 0; i < chars.length; i++) {
33+
int count = chars[i];
34+
if (count > 0) {
35+
sb.append('a' + i);
36+
sb.append(count);
37+
}
38+
}
39+
return sb.toString();
40+
}
41+
}

0 commit comments

Comments
 (0)