题目
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
说明
所有输入均为小写字母。
不考虑答案输出的顺序。
示例
输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
解答
我们可以用一个字典存储所有组合。我们要考虑,字母异位词具有什么共性,显然,我们将字母异位词中的字母进行排序,排序后得到的结果都是一样的,例如字母异位词“abc”和“bac”排序后的结果都是“abc”,因此我们可以使用每一组字母异位词排序后的结果作为键,这些字母异位词组成的列表作为值。
from collections import defaultdict
class Solution:
def groupAnagrams(self, strs):
"""
:param strs: List[str]
:return: List[List[str]]
"""
ans = defaultdict(list)
for s in strs:
ans[tuple(sorted(s))].append(s)
return ans.values()
如有疑问或建议,欢迎评论区留言~