Given an array of strings, group anagrams together.
For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"],
Return:
[
["ate", "eat","tea"],
["nat","tan"],
["bat"]
]
大意就是找出相同字符组成的所有的字符串
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> result = new ArrayList<List<String>>();
if(strs == null || strs.length == 0){
return result;
}
Map<String, List<String>> map = new HashMap<String, List<String>>();
/**
* 利用Arrays.sort的能力将相同char组成的不同String筛选出来
*/
for(String str : strs){
char[] chars = str.toCharArray();
Arrays.sort(chars);
String tmp = String.valueOf(chars);
if(map.containsKey(tmp)){
map.get(tmp).add(str);
}else{
List<String> list = new ArrayList<String>();
list.add(str);
map.put(tmp, list);
}
}
result.addAll(map.values());
return result;
}