49. 字母异位词分组
题目描述: 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。
考察重点:转为char[]数组进行排序,之后再转为String并结合Map进行分组。需要注意:char[]数组不能作为Map的键 参考博客
public List<List<String>> groupAnagrams(String[] strs) {
Map<String, List<String>> map = new HashMap<>();
for(int i = 0;i < strs.length;i ++){
char[] temp = strs[i].toCharArray();
Arrays.sort(temp);
String s = String.valueOf(temp);
if(map.containsKey(s)){
map.get(s).add(strs[i]);
}else{
ArrayList<String> list = new ArrayList<String>();
list.add(strs[i]);
map.put(s, list);
}
}
List<List<String>> res = new ArrayList<>();
map.forEach((k, v) -> {res.add(v);});
return res;
}
|