搜索此博客

2012年10月16日星期二

Anagrams


Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
01 public ArrayList<String> anagrams(String[] strs) {
02     Hashtable <ArrayList<Integer>,String> ht=new Hashtable<ArrayList<Integer>,String>();
03     ArrayList<String> result=new ArrayList<String>();
04     for(int i=0;i<strs.length;i++)
05     {
06         ArrayList<Integer> al=new ArrayList<Integer> ();
07         int[] str_array=new int[26];
08         for(int k=0;k<26;k++)
09             str_array[k]=0;
10         char[] str_char_array=strs[i].toCharArray();
11         for(int j=0;j<str_char_array.length;j++)
12         {
13             int index=(int) (str_char_array[j]-'a');
14             str_array[index]++;
15         }
16         for(int k=0;k<26;k++)
17         {
18             al.add(str_array[k]);              
19         }                      
20         if(!ht.containsKey(al))
21         {
22             ht.put(al,strs[i]);              
23         }
24 
25         else
26         {              
27             String s=ht.get(al);              
28             if(!result.contains(s))
29             {
30                 result.add(s);
31             }              
32             result.add(strs[i]);              
33         }
34     }
35     return result;
36 }

没有评论:

发表评论