LeetCode 49. 字母异位词分组-Py-字典、排序字母作关键字
原题链接
简单
作者:
shiqumi
,
2020-02-21 19:45:30
,
所有人可见
,
阅读 886
思路
# 如何发现单词的字母都一样只是顺序不同?
# 把单词的字母按照字母表顺序排序
# 如tea,ate,eat 都改为aet
哈希表
以排完序的结果作为关键字,把单词插到关键字对应的键值中去就行
时间复杂度:每个单词字符串排序的时间为mlogm, m为字符串长度
若有n个字符串,则排序时复为nmlogm
哈希表插入一个单词的时复为o(m),总插入时间为o(nm)
总时复为o(nmlogm + nm)
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
dic = {} # python用字典代替hash
for s in strs:
key = ''.join(sorted(s, key = str.lower)) # 按字母表顺序排序
if key in dic:
dic[key].append(s)
else:
dic[key] = [s]
res = []
for vals in dic.values():
# print(vals)
res.append(vals)
return res