Group Anagrams
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 class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
if(strs == null || strs.length == 0) return new ArrayList<List<String>>();
Map<String , List<String>> map = new HashMap<String, List<String>>(); //注意map里放的两个是啥,一个是字符串,另一个是链表用来输出
Arrays.sort(strs);
for(String s : strs){
char[] ca = s.toCharArray(); //先将字符串数组里的每个字符放入字符数组里
Arrays.sort(ca);//在进行排序
String keystr = String.valueOf(ca); //然后再放入到定义的字符串中
if (!map.containsKey(keystr)) map.put(keystr, new ArrayList<String>());
map.get(keystr).add(s);
}
return new ArrayList<List<String>>(map.values());
}
}