49. 字母异位词分组

思路:

  1. 判断两个str是否是同样构成可以用  collections.Couter(str) 返回一个dict, 将这些dicts 放入一个专门取index的列表:   [ dict1,dict2,dict3]等等

     若已有相同元素形成的dict,则将其存入对应dict index的列表中      [['abc', 'bca'], ['bcd', 'dcb'], ['bce']]

  2. 官方解答是 tuple(sort(str)) ,tuple可以作为key, 这样就可以直接用字典了 ,直接返回 dict.values 不需要像我一样建一个resList 

细节:

  1. 一个对象能不能作为字典的key,就取决于其有没有__hash__方法。所以所有python自带类型中,除了list、dict、set和内部至少带有上述三种类型之一的tuple之外,其余的对象都能当key。

    转自 https://blog.csdn.net/lnotime/article/details/81192207

代码:

from collections import Counter
class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        
        iList = []
        resList = []
        for a in strs:
            c = Counter(a)
            if c not in iList:
                iList.append(c)
                resList.append([a])
            else:
                i = iList.index(c)
                resList[i].append(a)
        return(resList)

  

原文地址:https://www.cnblogs.com/ChevisZhang/p/12960341.html