#49 Group Anagrams——Top 100 Liked Questions
Given an array of strings, group anagrams together.
Example:
Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
“””
第一次:参考官方答案,使用collections包,可直接转成如下格式:
“””
class Solution(object):
def groupAnagrams(self, strs):
"""
:type strs: List[str]
:rtype: List[List[str]]
"""
ans = []
d = collections.defaultdict(list)
for s in strs:
d[tuple(sorted(s))].append(s)
return d.values()
“””
Runtime: 84 ms, faster than 98.57% of Python online submissions for Group Anagrams.
Memory Usage: 16.3 MB, less than 31.44% of Python online submissions for Group Anagrams.
“””
“””
第二次:更好理解:建立字典,key是排序后的单词,value是与排序后单词相等的原单词
“””
class Solution(object):
def groupAnagrams(self, strs):
"""
:type strs: List[str]
:rtype: List[List[str]]
"""
"""
建立字典,key是排序后的单词,value是与排序后单词相等的原单词
"""
res = {}
for s in strs:
if ''.join(sorted(s)) not in res:
res[''.join(sorted(s))] = [s]
else:
res[''.join(sorted(s))].append(s)
return res.values()
“””
Runtime: 100 ms, faster than 81.66% of Python online submissions for Group Anagrams.
Memory Usage: 15.4 MB, less than 90.72% of Python online submissions for Group Anagrams.
“””
注:import collections
collections包的使用:
还没有评论,来说两句吧...