class Solution:
def groupAnagrams0(self, strs: List[str]) -> List[List[str]]:
"""
将字符串列表中的字母异位词分组。
Args:
strs: 输入的字符串列表。
Returns:
一个列表,其中每个子列表包含互为字母异位词的原始字符串。
"""
# 使用 defaultdict 可以简化代码,当访问一个不存在的键时,
# 它会自动创建一个默认值(这里是空列表 list)。
anagram_map = collections.defaultdict(list)
# 遍历输入列表中的每个单词
for word in strs:
# 对单词中的字母进行排序,生成规范的键
# sorted(word) 返回一个字符列表,例如 sorted("eat") -> ['a', 'e', 't']
# "".join(...) 将字符列表重新组合成字符串,例如 "".join(['a', 'e', 't']) -> "aet"
sorted_key = "".join(sorted(word))
# 将原始单词添加到对应排序键的列表中
# 如果 sorted_key 是第一次出现,defaultdict 会自动创建 anagram_map[sorted_key] = []
anagram_map[sorted_key].append(word)
# 哈希表的值(values)就是我们想要的分组列表
# list(...) 将字典的值视图转换为列表
return list(anagram_map.values())
def groupAnagrams2(self, strs: List[str]) -> List[List[str]]:
anagram_map =defaultdict(list)
for word in strs:
sorted_key=''.join(sorted(word))
anagram_map[sorted_key].append(word)
return list(anagram_map.values())
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
result =[]
#str_key_map ={}# key: str字符, value:同一个str的 字母异位词
str_key_map = defaultdict(list)
for str_key in strs:
count =[0]*26
for character in str_key:
count[ord(character)-ord('a')] +=1
count =tuple(count)
str_key_map[count].append(str_key)
return list (str_key_map.values())
49.字母异位词分组
最新推荐文章于 2025-07-14 21:46:24 发布