題目
給定一個字符串數組,將字母異位詞組合在一起。字母異位詞指字母相同,但排列不同的字符串。
說明
所有輸入均為小寫字母。
不考慮答案輸出的順序。
示例
輸入: ["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()
如有疑問或建議,歡迎評論區留言~