给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
Map<String,List<String>> map = new HashMap<>();
for(String str:strs){
//字符串转成字符数组
char[] ch = str.toCharArray();
//字符数组排序
Arrays.sort(ch);
//将排好序的字符数组转成字符串,做为map的key
String key = new String(ch);
//在map中通过key查询List<String>,如果没有就新建一个
List<String> list = map.getOrDefault(key,new ArrayList<String>());
//把str加入到list中
list.add(str);
map.put(key,list);
}
return new ArrayList<List<String>>(map.values());
}
}