力扣49.字母异位词分组_python

张开发
2026/5/22 7:09:12 15 分钟阅读
力扣49.字母异位词分组_python
给你一个字符串数组请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。示例 1:输入:strs [eat, tea, tan, ate, nat, bat]输出:[[bat],[nat,tan],[ate,eat,tea]]解释在 strs 中没有字符串可以通过重新排列来形成bat。字符串nat和tan是字母异位词因为它们可以重新排列以形成彼此。字符串ateeat和tea是字母异位词因为它们可以重新排列以形成彼此。示例 2:输入:strs []输出:[[]]示例 3:输入:strs [a]输出:[[a]]提示1 strs.length 1040 strs[i].length 100strs[i]仅包含小写字母思路1.字母异位词的字母出现频率相同提取字母出现频率作为唯一key2.使用 频次数组/字典 记录字母频次 此处使用数组3.将频次数组转为元组不可变对象作为唯一标识最终代码class Solution: def groupAnagrams(self, strs: List[str]) - List[List[str]]: from collections import defaultdict #默认dict的value为list类型方便后续append操作 hash_res defaultdict(list) for s in strs: #频次数组a-z count [0] * 26 for char in s: #索引映射 count[ord(char) - ord(a)] 1 # 将列表转为元组 hash_res[tuple(count)].append(s) return list(hash_res.values())

更多文章