您的位置:首页 > 其它

49. Group Anagrams 【M】【47】

2016-04-29 17:30 260 查看
Given an array of strings, group anagrams together.

For example, given:
["eat", "tea", "tan", "ate", "nat", "bat"]
,

Return:
[
["ate", "eat","tea"],
["nat","tan"],
["bat"]
]


Note:

For the return value, each inner list's elements must follow the lexicographic order.
All inputs will be in lower-case.

Subscribe to see which companies asked this question



本来写成下面的,超时了

这里面有两个优化,一个是使用get方法,可以免去判断

一个是,上来就相对strs进行排序

还有一个是,不要用set了,直接对每个字符串进行一个排序,这样就进行了一个归一化了

class Solution(object):
def groupAnagrams(self, strs):

dic = {}
strs.sort()

for i in strs:
ii = ''.join(sorted(i))

dic[ii] = dic.get(ii, []) + [i]

'''
if ii in keys:
dic[ii].append(i)
else:
keys.append(ii)
dic[ii] = [i]
'''

res = list(dic.values())
return res
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: