题目
思路
根据相同字符的字符串排序后相同,将排序后的字符当做对应的键,值为排序后字符串和键相同的源字符串
解题过程
1.长度为0,返回[[""]],长度为1或字符串有单个自负组成,则直接返回[str]
2.无上述情况下
- 首先创建个列表s 来存储字符串排序后的数据(无重复)
- 接着创建个空字典来进行映射
代码
python
class Solution(object):
def groupAnagrams(self, strs):
"""
:type strs: List[str]
:rtype: List[List[str]]
"""
if len(strs)==0:
return [[""]]
elif len(strs)==1 or strs.count(strs[0])==len(strs):
return [strs]
else:
s = []
dict1 = {}
for i in strs:
t = ''.join(sorted(i))
if t not in s:
s.append(t)
dict1[t]=[]
# dict1[t] = dict1[t].append(i)
dict1[t].append(i)
return dict1.values()
改进
python
class Solution(object):
def groupAnagrams(self, strs):
"""
:type strs: List[str]
:rtype: List[List[str]]
"""
if len(strs)==0:
return [[""]]
elif len(strs)==1 or strs.count(strs[0])==len(strs):
return [strs]
else:
dict1 = {}
for i in strs:
t = ''.join(sorted(i))
if t not in dict1:
dict1[t]=[]
dict1[t].append(i)
return dict1.values()
ps:
有个问题我不太能明白,dict1[t].append(i)这行代码我之前是使用dict1[t] = dict1[t].append(i),但会报错。我在之前已经有 dict1[t]=[],按理来说我只是往列表添加数据然后再赋值,可为什么会报错呢?(有知道的麻烦评论告知,在此先表示感谢)
知识点:
关于字符串内置函数 sorted()