题目:
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
import java.util.*;
/**
* Java HashMap getOrDefault()方法: 获取HashMap中指定关键词 key 对应的 value,
* 如果没有该关键词则返回自定义的默认值。
* 此方法使用方便,代码简洁,常被用于避免NullPointerException异常。
*
* 字母异位词:两个单词的字母全都一样,只是排列顺序不同。
* 思路:相同的"字母异位词"经过排序后一定相同,所以可以使用HashMap中的一个方法getOrDefault,
* 如果是"字母异位词" 则返回存储该字母异位词的列表,并将该词加入到列表中。
* @auther start
* @create 2023-11-13 17:52
*/
public class L49 {
public List<List<String>> groupAnagrams(String[] strs) {
Map<String,List<String>> map = new HashMap<>();
for (String str : strs) {
char[] array = str.toCharArray();
//排序每一个单词
Arrays.sort(array);
//转为字符串
String key = new String(array);
//获取存储该“字母异位词”的列表,若没有该关键词则返回默认值,默认值为列表
List<String> list = map.getOrDefault(key,new ArrayList<String>());
//添加该单词
list.add(str);
//更新数据
map.put(key,list);
}
//返回数据
return new ArrayList<List<String>>(map.values());
}
}