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)