字母异位词分组
Group Anagrams
本机进度仅保存在当前浏览器
题目描述
给你一个字符串数组,请你将「字母异位词」组合在一起(字母相同、排列不同的词),返回分组结果。
示例:输入 ["eat", "tea", "tan", "ate", "nat", "bat"],输出 [["eat","tea","ate"],["tan","nat"],["bat"]]。
解题思路
- 分组问题要有「组键」:同一组内所有元素映射到同一个键。
- 键的两种取法:把字符串排序后的结果(如 eat/tea/ate 都变成 aet);或 26 位字母计数向量转元组。
- 用哈希表「键 -> 分组列表」聚合,最后输出全部值;计数键对长字符串更优(免排序)。
参考实现
查看参考实现Python · 建议先自行作答
from collections import defaultdict
def groupAnagrams(strs):
groups = defaultdict(list)
for s in strs:
# 排序结果作为异位词的统一组键
key = ''.join(sorted(s))
groups[key].append(s)
return list(groups.values())