NO49. 字母异位词分组

#首先进行排序把相同字符的排到一起
#遍历把排序字符当键,原元素当值加入列表

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        if len(strs)<=1:
            return [strs]
        r = {}
        for i in strs:
            s = ''.join(sorted(i))
            if s not in r:
                r[s] = [i]
            else:
                r[s].append(i)
        return [v for v in r.values()]

 #暴力破解法
#对每个字符都做一个字典,然后做一个字典的列表,以及相对应的答案列表
#如果这个字符在这个字典中,就在答案列表对应的子列表中添加字符
#不然的话就在答案列表中创建子列表,然后在字典列表中加入这个字典

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        dictLst, ans = [], []
        for s in strs:
            temp = self.changeToDict(s) 
            if temp not in dictLst:   #当字符所对应的字典不在字典列表中
                dictLst.append(temp)  #字典列表添加这个字典
                ans.append([s])       #答案添加一个列表,其下标和字典列表一一对应
            else:   #如果这个字符在这个字典中,就在答案列表对应的子列表中添加字符
                ans[dictLst.index(temp)].append(s)
        return ans

    def changeToDict(self, s):
        a = {}
        for i in s:
            if i in a:
                a[i] += 1
            else:
                a[i] = 1
        return a

 

posted @   是冰美式诶  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示