Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
import java.util.Hashtable;
import java.util.HashMap;
public class Solution {
public String sortChars(String s) {
char[] content = s.toCharArray();
Arrays.sort(content);
return new String(content);
}
public ArrayList anagrams(String[] strs) {
ArrayList res = new ArrayList();
HashMap> hash =
new HashMap>();
/* Group words by anagram */
for (String s : strs) {
String key = sortChars(s);
if (!hash.containsKey(key)) {
hash.put(key, new LinkedList());
}
LinkedList anagrams = hash.get(key);
anagrams.push(s);
}
for (String key : hash.keySet()) {
LinkedList list = hash.get(key);
if (list.size() > 1) {
for (String t : list)
res.add(t);
}
}
return res;
}
}