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包的使用: