🌕 49. 字母异位词分组
2022年6月9日
- algorithm
🌕 49. 字母异位词分组
难度: 🌕
问题描述
解法
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
// 思路:
// 遍历 每个字符串
// 对当前字符串排序
// HashMap 记录判断是否有当前排序后的字符串
// 不存在则是一个新的集合
// HashMap 记录以排好序后的字符串所在的链表
List<List<String>> res = new ArrayList<>();
HashMap<String, List<String>> map = new HashMap<>();
for(String str : strs) {
char[] array = str.toCharArray();
Arrays.sort(array);
String cur = String.valueOf(array);
if(!map.containsKey(cur)) {
List<String> list = new ArrayList<>();
list.add(str);
map.put(cur, list);
} else {
List<String> list = map.get(cur);
list.add(str);
map.put(cur, list);
}
}
// 取出 map 中链表出结果
for(List<String> list : map.values()) {
res.add(list);
}
return res;
}
}