-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathAnagrams.java
More file actions
37 lines (31 loc) · 1.19 KB
/
Anagrams.java
File metadata and controls
37 lines (31 loc) · 1.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/*
Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
*/
public class Solution {
public ArrayList<String> anagrams(String[] strs) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
ArrayList<String> results = new ArrayList<String>();
HashMap<String, ArrayList<String>> anagramsMap = new HashMap<String, ArrayList<String>>();
for (int i = 0; i < strs.length; i++) {
String cur = strs[i];
char[] temp = cur.toCharArray();
Arrays.sort(temp);
String key = new String(temp);
if (anagramsMap.containsKey(key)) {
anagramsMap.get(key).add(cur);
} else {
ArrayList<String> newGroup = new ArrayList<String>();
newGroup.add(cur);
anagramsMap.put(key, newGroup);
}
}
for (ArrayList<String> s : anagramsMap.values()) {
if (s.size() > 1) {
results.addAll(s);
}
}
return results;
}
}