方法一:排序数组分类
当且仅当它们的排序字符串相等时,两个字符串是字母异位词。
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
d = {}
for s in strs:
k = tuple(sorted(s)) # tuple可以作为字典的key
d[k] = d.get(k, []) + [s]
return list(d.values())
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
d ={}
for s in strs:
k = ''.join(sorted(s))
if k not in d:
d[k] = [s]
else:
d[k].append(s)
return list(d.values())方法二:按计数分类
当且仅当它们的字符计数(每个字符的出现次数)相同时,两个字符串是字母异位词。
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
d = {}
for s in strs:
k = [0] * 26
for i in s:
k[ord(i) - ord('a')] += 1
d[tuple(k)] = d.get(tuple(k), []) + [s]
return list(d.values())