题目描述

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

思路

对每个单词构建一个字母哈希表,key 为字母的出现次数,value 为出现过的所有单词。

最终代码:

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        def build_hash(sStr):
            hash_set = [0] * 26
            for ch in sStr:
                hash_set[ord(ch)-ord('a')] += 1
            return tuple(hash_set)
        ret_dict = {}
        for s in strs:
            s_hash = build_hash(s)
            if s_hash not in ret_dict:
                ret_dict[s_hash] = [s]
            else:
                ret_dict[s_hash].append(s)
        return list(ret_dict.values())

想得太多

利用 listdict.values 做初始化