HWA_06leetcode49字母异位词分组
题目
解题方案
.defaultdict方法的作用
classSolution:defgroupAnagrams(self,strs:List[str])->List[List[str]]:#互为字母异位词的两个字符串包含的字母相同#因此两个字符串中相同字母出现的次数是一定相同的#可以将每个字母出现的次数使用字符串表示,作为哈希表的键mp=collections.defaultdict(list)forsinstrs:#counts代表每个小写字母的频次counts=[0]*26#利用for循环统计str中每个字母出现的频次forcins:counts[ord(c)-ord('a')]+=1#将每个出现次数大于0的字母和出现次数按顺序拼接成字符串,作为哈希表的键key="".join(['#'+str(count)forcountincounts])#在哈希表mp中找出这个key对应的字符串str来#1如果有这个key,那么这个key对应的数组会新增一个str进去#2如果没有这个key,那么会初始化一个数组,用来新增这个strmp[key].append(s)#返回结果returnlist(mp.values())图解
图解1
相同颜色的是一组
图解2
每访问到一个单词,统计其字母出现的情况(遍历字母表从a到z进行一一对应)
然后将其表达为
将这个东西作为哈希表/列表的key,对应的value(值)则为当前的字符串"eat"
那么,列表的内容为
在做完列表后,如果两个key是相等的,那么就把他放入同一个列表当中
在最后我们只需要返回对应列表的value值即可因为
