1 public class Solution { 2 public ArrayList<String> anagrams(String[] strs) { 3 // Start typing your Java solution below 4 // DO NOT write main() function 5 int len = strs.length; 6 ArrayList<String> result = new ArrayList<String>(); 7 Map<String, ArrayList<String>> sorted = new HashMap<String, ArrayList<String>>(); 8 9 for(int i = 0; i < len; i++){ 10 String tmp = strs[i]; 11 String sort = sortStr(tmp); 12 if(sorted.get(sort) != null){ 13 sorted.get(sort).add(tmp); 14 } else { 15 ArrayList<String> list = new ArrayList<String>(); 16 list.add(tmp); 17 sorted.put(sort, list); 18 } 19 } 20 21 Iterator iter = sorted.values().iterator(); 22 while(iter.hasNext()){ 23 ArrayList<String> list = (ArrayList<String>)iter.next(); 24 if(list.size() > 1){ 25 result.addAll(list); 26 } 27 } 28 29 return result; 30 } 31 32 public String sortStr(String str){ 33 char[] c = str.toCharArray(); 34 Arrays.sort(c); 35 return new String(c); 36 } 37 }