49. 字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 1:
输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]
示例 2:
输入: strs = [“”]
输出: [[“”]]
示例 3:
输入: strs = [“a”]
输出: [[“a”]]
提示:
1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i] 仅包含小写字母
我的AC代码
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
ans={}
for s in strs :
key = "".join(sorted(s))
if key not in ans: # 如果键不存在于字典中,初始化为空列表
ans[key] = []
ans[key].append(s)
return list(ans.values())
copilot
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
# 创建一个默认字典,值默认为空列表
anagram_groups = defaultdict(list)
# 遍历输入的每个字符串
for s in strs:
# 将字符串排序后作为键(字母异位词排序后相同)
key = ''.join(sorted(s))
# 将原始字符串添加到对应组
anagram_groups[key].append(s)
# 返回所有分组的列表
return list(anagram_groups.values())
collections.defaultdict 创建字典的方法
defaultdict 的作用
defaultdict 是 dict 的子类,它提供了一个工厂函数,用于在访问不存在的键时自动初始化默认值。这种方式特别适合在字典中存储和管理具有相同结构或默认值的数据。
defaultdict 的创建方式
from collections import defaultdict
anagram_groups = defaultdict(list)
defaultdict 的第一个参数是一个工厂函数(在这里是 list)。
当访问 anagram_groups 中不存在的键时,defaultdict 会自动调用 list(),并返回一个空列表作为默认值。
总结
如果不使用defaultdict方法在访问字典不存在的key值时就要手动赋值
littile tips
sorted() ##函数返回的是列表
join() ##函数连接字符串