Hot100 - 字母异位词分组

最佳思路:排序
时间复杂度: O(nmlogm),其中 n
为 strs
数组的长度,m
为每个字符串的长度。
代码:
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
Map<String, List<String>> map = new HashMap<>();
for (String str : strs) {
char[] s = str.toCharArray();
Arrays.sort(s); // 对字母排序
String sortedStr = new String(s); // 排序后的字符串作为key
map.computeIfAbsent(sortedStr, k -> new ArrayList<>()).add(str);
}
return new ArrayList<>(map.values());
}
}
思路:
- 排序每个字符串:首先对每个字符串的字母进行排序,排序后的结果作为唯一标识符(key)。
- 使用 Map 存储:将排序后的字符串作为 key,原始字符串作为值存入
Map
。使用computeIfAbsent
方法可以简化代码,避免多次检查和更新Map
。 - 最终返回
Map
中所有的字母异位词组。