Problem
# 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: All inputs will be in lower-case.
Note:
- 字符串也可以sort之,但是返回的是list型,需要借助 ”.join() 来 恢复str型 。
AC
class Solution():
def groupAnagrams(self, x):
d = {}
for s in x:
key = ''.join(sorted(s))
if key in d:
d[key].append(s)
else:
d[key] = [s]
return list(d.values())
if __name__ == '__main__':
strs = [["ate", "eat", "tea"], ["nat", "tan"], ["bat"]]
assert Solution().groupAnagrams(strs) == [[['ate', 'eat', 'tea']], [['nat', 'tan']], [['bat']]]