Group Anagrams
这道题关键在于看出来anagrams是所有字母个数都一样的字符串,这样的话我们就可以把所有字符串拆开排序再拼成字符串,这样所有的anagram就变成了同一个字符串的排列,我们就可以利用这个串进行哈希了,下面是代码
class Solution(object):
def groupAnagrams(self, strs):
"""
:type strs: List[str]
:rtype: List[List[str]]
"""
res = []
store = {}
for index, str in enumerate(strs):
tmp = ''.join(sorted(str))
if tmp in store:
store[tmp].append(index)
else:
store[tmp] = [index]
for key, value_list in store.items():
tmp = []
for index in value_list:
tmp.append(strs[index])
res.append(tmp)
return res
迄今为止最短的版本
class Solution(object):
def groupAnagrams(self, strs):
store = collections.defaultdict(list)
for str in strs:
store[''.join(sorted(str))].append(str)
return store.values()