leetcode热题100-049:字母异位词分组
给你一个字符串数组,请你将 组合在一起。可以按任意顺序返回结果列表。
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
解法一:质数表法
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
alpha = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,51,53,57,59,61,67,71,73,79,83,87,89,91,97,101]
cnt = defaultdict(list)
for str in strs :
mul = 1
for s in str :
mul *= alpha[ord(s)-ord('a')]
cnt[mul].append(str)
return list(cnt.vaules())
解法二:哈希表法
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
hashtable = defaultdict(list)
for str in strs :
s=''.join(sorted(str))
hashtable[s].append(str)
return list(hashtable.values())


浙公网安备 33010602011771号