☰
leecode 热题100(49.字母异位词分组)
2026/9/29 15:08:22 网站建设 项目流程

题目:

给你一个字符串数组,请你将字母异位词 组合在一起。可以按任意顺序返回结果列表。

示例 1:

输入:strs = ["eat", "tea", "tan", "ate", "nat", "bat"]

输出:[["bat"],["nat","tan"],["ate","eat","tea"]]

解释:

  • 在 strs 中没有字符串可以通过重新排列来形成"bat"。
  • 字符串"nat"和"tan"是字母异位词,因为它们可以重新排列以形成彼此。
  • 字符串"ate","eat"和"tea"是字母异位词,因为它们可以重新排列以形成彼此。

示例 2:

输入:strs = [""]

输出:[[""]]

示例 3:

输入:strs = ["a"]

输出:[["a"]]

提示:

  • 1 <= strs.length <= 104
  • 0 <= strs[i].length <= 100
  • strs[i]仅包含小写字母

我的代码:

其实这道题我都没做出来,思考了接近一个小时,一直卡着,没办法,就把思路给AI讲了,AI写的:

class Solution: def groupAnagrams(self, strs: list[str]) -> list[list[str]]: groups = {} for word in strs: key = ''.join(sorted(word)) if key not in groups: groups[key] = [] groups[key].append(word) return list(groups.values())

这里的原理其实是哈希表​​,哈希表是一种通过​​键(Key)​​ 直接访问​​值(Value)​​ 的数据结构。它的核心思想是:​​通过哈希函数将键映射到数组的特定位置,从而实现快速访问​​。

在这里就表现为:把每一个元素比如eat、tea、ate转换成一样的编号key比如aet(就是按字母顺序排列),然后通过aet这个编号实现快速存取value。

优秀代码

class Solution: def groupAnagrams(self, strs: list[str]) -> list[list[str]]: mp = collections.defaultdict(list) for st in strs: key = ''.join(sorted(st)) mp[key].append(st) return list(mp.values())

其中mp = collections.defaultdict(list) 这句代码中的 collections 是 Python 自带的一个工具模块,defaultdict 是里面提供的一种特殊字典。list 就是 Python 里的列表类型本身,这里把它传进去,意思是:"当碰到不存在的 key 时,请用 list() 来自动创建一个默认值。"

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询