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 }
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 }
没有评论:
发表评论