字母异位词分组
Leetcode第49题
下面是菜菜的想法与实现,采用了字典计数器来实现,比较费时间和内存吧(emmm)
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
if strs==[]:return []
res = [] # 输出结果
count = [] #计数器
for k in range(len(strs)):
#---生成单个字符的字典计数
dict_={}
for i in strs[k]:
dict_.setdefault(i,0)
dict_[i]+=1
#第一个字符串
if k == 0:
count.append(dict_)
res.append([strs[k]])
continue
#---判断该计数器是否在已有的序列中
for i,key in enumerate (count):
if key == dict_:
res[i].append(strs[k])
break
if i == len(count)-1:
count.append(dict_)
res.append([strs[k]])
break
return res
下面是他人比较好的利用内置函数及数据结构实现的算法,只能说菜菜的只能是初阶段位于怎么理解解题不适合应用,来看看大佬们如何实现的
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
dict = {}
for item in strs:
key = tuple(sorted(item))
dict[key] = dict.get(key, []) + [item]
return list(dict.values())