2.字母异位词分组
给你一个字符串数组,请你将字母异位词组合在一起。可以按任意顺序返回结果列表。
字母异位词是由重新排列源单词的所有字母得到的一个新单词。
示例1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
示例2:
输入: strs = [""]
输出: [[""]]
示例3:
输入: strs = ["a"]
输出: [["a"]]
提示:
- 1 <= strs.length <= 104
- 0 <= strs[i].length <= 100
- strs[i] 仅包含小写字母
代码:
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
//创建哈希表,键是排序后的字符串,值是异位词列表
Map<String,List<String>> mp = new HashMap<>();
//遍历每一个字符串
for(int i = 0;i < strs.length;i++){
//将字符串转换为字符数组并排序
char[] str = strs[i].toCharArray();
Arrays.sort(str);
//将排序后的字符数组转回字符串
String key = new String(str);
//将排序后的字符串作为键,原始字符串添加到对应的列表中
//如果不存在排序后的字符串的键,则新建一个空列表
List<String> list = mp.getOrDefault(key,new ArrayList<String>());
list.add(strs[i]);
//添加异位词到列表中
mp.put(key,list);
}
//返回哈希表中的所有值,即为所有的异位词分组
return new ArrayList<List<String>>(mp.values());
}
}

浙公网安备 33010602011771号