public class Anagrams {
public List anagrams(String[] strs) {
ArrayList result = new ArrayList();
if (strs == null || strs.length == 0) {
return result;
}
HashMap> map =
new HashMap>();
for (String str: strs) {
String newStr = sortChar(str);
if (!map.containsKey(newStr)) {
map.put(newStr, new ArrayList());
}
ArrayList anagrams = map.get(newStr);
anagrams.add(str);
}
for (String key: map.keySet()) {
ArrayList anagrams = map.get(key);
if (anagrams.size() > 1) {
// or it will return [""], but expected []
result.addAll(anagrams);
}
}
return result;
}
// Sort each str
public String sortChar(String str) {
char[] chr = str.toCharArray();
java.util.Arrays.sort(chr);
return new String(chr);
}
}
Friday, February 7, 2014
Anagrams
Write a program to sort an array of strings so that all anagrams are next to each other.
Labels:
Algorithms,
Java,
Leetcode
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment