Given an array of strings, return all groups of strings that are anagrams.
第一次面试dropbox就是面的anagrams。在面试前还恰巧看到了这个题,最后答得还是一塌糊涂。我在面试的时候想到了对string字符排序,但我忘记了hashtable这回事了。
这个题就是把string的字符排下序,然后放到一个hashmap中,如果有其他string和这个能匹配上,就放到result中;否则放入map中。就这么简单。。。。
哎。。。。
1 public ArrayList<String> anagrams(String[] strs) { 2 ArrayList<String> result = new ArrayList<String>(); 3 HashMap<String, Integer> map = new HashMap<String, Integer>(); 4 for (int i=0; i<strs.length; i++) { 5 char[] s = strs[i].toCharArray(); 6 Arrays.sort(s); 7 String k = new String(s); 8 if (map.containsKey(k)) { 9 if (map.get(k) != -1) { 10 result.add(strs[map.get(k)]); 11 map.put(k, -1); 12 } 13 result.add(strs[i]); 14 } 15 else { 16 map.put(k, i); 17 } 18 } 19 return result; 20 }