2.字母异位词分组

发布时间:2026/8/1 6:37:41

2.字母异位词分组 给你一个字符串数组请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。方法一哈希表经过遍历将共性(也就是要求的字母异位词的共性:单词个数相同单词种类相同)作为键个性作为值存储起来二次查找时仅需要O(1)的时间复杂度。注意可变数据不能作为键使用哈希表后值与遍历过的值有联系。class Solution(object): def groupAnagrams(self, strs): hash_mapcollections.defaultdict(list) for str in strs: sort_str.join(sorted(str)) hash_map[sort_str].append(str) return list(hash_map.values())时间复杂度O(N * K log K)空间复杂度O(N * K)方法二:计数法以字符串所含字符的个数为键class Solution(object): def groupAnagrams(self, strs): mpcollections.defaultdict(list) for str in strs: counts[0]*26 for char in str: counts[ord(char)-ord(a)]1 mp[tuple(counts)].append(str) return list(mp.values())总结1.哈希解决以O(1)时间复杂度寻找遍历过后的元素2.mpcollections.defaultdict(list) 初始化字典在没有键的时候不报错默认创建list3.可变变量不能作为键

相关新闻