leetcode 每日一题 49. 字母异位词分组

排序分类

思路:

建一个字典,把数组中排序后的字符串作为key值,对应数组中的原字符串添加到value中的数组里。

代码:

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        def sortStr(word:str)->str:
            return "".join(sorted(list(word)))
        dic = {}
        for word in strs:
            sortedWord = sortStr(word)
            if sortedWord in dic:
                dic[sortedWord].append(word)
            else:
                dic[sortedWord] = [word]
        return list(dic.values())

统计字符出现次数

思路:

建一个字典,把每个字符串中字符在26个英文字母数组中出现的次数作为key值,对应字符串添加到value数组中。

代码:

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        def keyStr(word:str)->str:
            key = [0] * 26
            for char in word:
                key[ord(char) - ord('a')] += 1
            return ''.join([str(i) for i in key])
        dic = {}
        for word in strs:
            key = keyStr(word)
            if key in dic:
                dic[key].append(word)
            else:
                dic[key] = [word]
        return list(dic.values())

 

 

posted @ 2020-05-31 12:35  nil_f  阅读(145)  评论(0)    收藏  举报