Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
分析:
anagram就是异形词,就是有相同的字母组成,但是顺序不同形成的单词。
首先,判断异形词可以通过先排序后相等的方式,
其次,用HashMap把异形词组织起来,
最后,把所以异形词组按顺序加入结果集。
public class Solution {
public List<String> anagrams(String[] strs) {
List<String> res = new ArrayList<String>();
if(strs==null || strs.length==0)
return res;
HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
for(String item : strs){
char[] charArr = item.toCharArray();
Arrays.sort(charArr);
String newStr = new String(charArr);
if(map.containsKey(newStr)){
map.get(newStr).add(item);
}else{
ArrayList<String> list = new ArrayList<String>();
list.add(item);
map.put(newStr, list);
}
}
for(ArrayList<String> list : map.values()){
if(list.size() > 1)
res.addAll(list);
}
return res;
}
}