字母异位词分组
Last updated
Last updated
问题简述
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。
思路
设计一个方法将字母异位词转化为相同的 key, 然后使用字典存储;
将 s 排序后保存为 key;
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
from collections import defaultdict
def to_key(s):
return tuple(sorted(s)) # ''.join(sorted(s))
ret = defaultdict(list)
for s in strs:
ret[to_key(s)].append(s)
return list(ret.values())
记录每个字符出现的次数;
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
from collections import defaultdict
def to_key(s):
cnt = [0] * 26
for c in s:
cnt[ord(c) - ord('a')] += 1
return tuple(cnt)
ret = defaultdict(list)
for s in strs:
ret[to_key(s)].append(s)
return list(ret.values())