NO49. 字母异位词分组
#首先进行排序把相同字符的排到一起
#遍历把排序字符当键,原元素当值加入列表
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
if len(strs)<=1:
return [strs]
r = {}
for i in strs:
s = ''.join(sorted(i))
if s not in r:
r[s] = [i]
else:
r[s].append(i)
return [v for v in r.values()]
#暴力破解法
#对每个字符都做一个字典,然后做一个字典的列表,以及相对应的答案列表
#如果这个字符在这个字典中,就在答案列表对应的子列表中添加字符
#不然的话就在答案列表中创建子列表,然后在字典列表中加入这个字典
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
dictLst, ans = [], []
for s in strs:
temp = self.changeToDict(s)
if temp not in dictLst: #当字符所对应的字典不在字典列表中
dictLst.append(temp) #字典列表添加这个字典
ans.append([s]) #答案添加一个列表,其下标和字典列表一一对应
else: #如果这个字符在这个字典中,就在答案列表对应的子列表中添加字符
ans[dictLst.index(temp)].append(s)
return ans
def changeToDict(self, s):
a = {}
for i in s:
if i in a:
a[i] += 1
else:
a[i] = 1
return a