Group Anagrams

这道题关键在于看出来anagrams是所有字母个数都一样的字符串,这样的话我们就可以把所有字符串拆开排序再拼成字符串,这样所有的anagram就变成了同一个字符串的排列,我们就可以利用这个串进行哈希了,下面是代码

class Solution(object):
    def groupAnagrams(self, strs):
        """
        :type strs: List[str]
        :rtype: List[List[str]]
        """
        res = []
        store = {}
        for index, str in enumerate(strs):
            tmp = ''.join(sorted(str))
            if tmp in store:
                store[tmp].append(index)
            else:
                store[tmp] = [index]

        for key, value_list in store.items():
            tmp = []
            for index in value_list:
                tmp.append(strs[index])
            res.append(tmp)

        return res

迄今为止最短的版本

class Solution(object):
    def groupAnagrams(self, strs):
        store = collections.defaultdict(list)
        for str in strs:
            store[''.join(sorted(str))].append(str)
        return store.values()

results matching ""

    No results matching ""