LeetCode: Anagrams

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     }

 

posted on 2014-02-03 07:09  longhorn  阅读(129)  评论(0编辑  收藏  举报

导航