第一次初始写代码:
class Solution(object):
def groupAnagrams(self, strs):
"""
:type strs: List[str]
:rtype: List[List[str]]
"""
result = []
dict = {}
for str in strs:
str_arr = []
for element in str:
str_arr.append(element)
dict[str] = str_arr
# 需要判断两个数组 一个在外层 一个在内层 如何判断字典的两个值相同
value_dict = {}
for key in strs:
if key in value_dict :
# 字典的键值
return dict
发现写不出来
题解一:
互为异位词等同于排序后字符串相同,因此通过哈希表来维护,key设为排序后的字符串,val来保存每个异位词结果,最后返回哈希表值的集合即可
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
table = {}
for s in strs:
s_ = "".join(sorted(s))
if s_ not in table:
table[s_] = [s]
else:
table[s_].append(s)
return list(table.values())
来自北大算法课 作者:doubleZ
题解二:
主要是dict.get()函数的理解 dict.get(key, default=None)
- key – 字典中要查找的键。
- default – 如果指定键的值不存在时,返回该默认值。
还有一点要注意:因为字典的键,必须是不可变类型,所以用tuple。
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())
作者:梦之痕