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());
}
排序
哈希表的组成:key:排序后的单词字符串,value:相同字母异位词的列表
第一步:排序,将字符串转换成数组,排序
第二步:将排序后的数组转换为字符串,作为哈希表的key
第三步:使用getOrDefault()检查哈希表中是否存在当前的key,有则返回相同字母异位词的列表,没有则返回一个新列表
第四步:将排序前的单词插入返回的列表,并将key,list插入哈希表