Skip to content

Commit 46faa0e

Browse files
author
Guanchen Zhao
committed
Update GroupAnagrams.java
1 parent 35eaa3c commit 46faa0e

File tree

1 file changed

+28
-21
lines changed

1 file changed

+28
-21
lines changed

src/leetcode/solution/Hash/GroupAnagrams.java

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,33 +20,40 @@ public static void main(String[] args) {
2020
}
2121

2222
public List<List<String>> groupAnagrams(String[] strs) {
23-
if (strs == null || strs.length == 0) {
24-
return new ArrayList<>();
23+
List<List<String>> ans = new ArrayList<>();
24+
Map<String, List<String>> map = new HashMap<>();
25+
26+
for (String s : strs) {
27+
String key = format(s);
28+
if (!map.containsKey(key)) {
29+
map.put(key, new ArrayList<>());
30+
}
31+
32+
map.get(key).add(s);
2533
}
26-
Map<String, List<String>> memo = new HashMap<>();
2734

28-
for (String str : strs) {
29-
char[] ca = new char[26];
30-
for (char c : str.toCharArray()) {
31-
ca[c - 'a']++;
35+
for (Map.Entry<String, List<String>> entry : map.entrySet()) {
36+
ans.add(entry.getValue());
37+
}
3238

33-
System.out.println(ca[c - 'a']);
34-
}
39+
return ans;
40+
}
3541

36-
System.out.println(ca);
37-
String key = String.valueOf(ca);
38-
System.out.println(key);
39-
if (memo.containsKey(key)) {
40-
List<String> values = memo.get(key);
41-
values.add(str);
42-
} else {
43-
List<String> valueList = new ArrayList<>();
44-
valueList.add(str);
45-
memo.put(key, valueList);
46-
}
4742

43+
private String format(String s) {
44+
int[] bit = new int[26];
45+
46+
for (int i = 0; i < s.length(); i++) {
47+
char c = s.charAt(i);
48+
bit[c - 'a']++;
49+
}
50+
51+
StringBuilder sb = new StringBuilder();
52+
53+
for (int i = 0; i < bit.length; i++) {
54+
sb.append(bit[i]);
4855
}
4956

50-
return new ArrayList<>(memo.values());
57+
return sb.toString();
5158
}
5259
}

0 commit comments

Comments
 (0)