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())
posted @ 2025-11-04 17:27  图兜  阅读(8)  评论(0)    收藏  举报