方法一
代码
public static List<List<String>> groupAnagrams(String[] strs){
// 创建一个哈希映射,用于存储按字符排序后的字符串作为键,对应的异位词列表作为值
HashMap<String, List<String>> map = new HashMap<>();
// 遍历输入的字符串数组
for (String str : strs) {
// 将字符串转换为字符数组
char[] chars = str.toCharArray();
// 对字符数组进行排序
Arrays.sort(chars);
// 将排序后的字符数组转换为字符串,作为哈希映射的键
String key = new String(chars);
// 从哈希映射中获取与当前键关联的异位词列表
List<String> list = map.get(key);
// 如果列表为空(即当前键第一次出现),则创建一个新列表并放入哈希映射
if(list == null){
list = new ArrayList<>();
map.put(key, list);
}
// 将当前字符串添加到与键关联的异位词列表中
list.add(str);
}
// 返回异位词分组的列表
return new ArrayList<>(map.values());
}
检测
public static void main(String[] args) {
String[] strs = {"eat","tea","tan","ate","nat","bat"};
List<List<String>> lists = groupAnagrams(strs);
System.out.println(lists);
}
IDEA结果