Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 |
public
class
Solution { public
ArrayList<String> anagrams(String[] strs) { ArrayList<String> result = new
ArrayList<String>(); if (strs.length > 0 ){ HashMap<String, ArrayList<String> > words = new
HashMap<String, ArrayList<String>>(); for (String s : strs){ String sortedString = sortedString(s); if (words.containsKey(sortedString)) words.get(sortedString).add(s); else { ArrayList<String> alist = new
ArrayList<String>(); alist.add(s); words.put(sortedString, alist); } } Iterator<ArrayList<String> > itr = words.values().iterator(); while (itr.hasNext()){ ArrayList<String> nodes = itr.next(); if (nodes.size()> 1 ) result.addAll(nodes); } } return
result; } public
String sortedString(String s){ char [] Schar = s.toCharArray(); Arrays.sort(Schar); return
Arrays.toString(Schar); } } |
原文:http://www.cnblogs.com/averillzheng/p/3541358.html