給定一個字符串數組,將字母異位詞組合在一起。字母異位詞指字母相同,但排列不同的字符串。
示例:
輸入: ["eat", "tea", "tan", "ate", "nat", "bat"]
輸出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
說明:
- 所有輸入均爲小寫字母
- 不考慮答案輸出的順序。
題目要求將字母異位詞分組,即將由相同字母組成但排序不同的詞分到同一組中。判斷兩個詞組成的字符是否都相同,我們可以使用sorted()
將單詞按字典序排列後進行排序。然後將所有按字典序排列後相同的詞分到一組中,同時結果使用字典存儲,鍵爲字典序排序結果,值爲所有由鍵中字符排列組合得到的詞。
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
if not strs: return []
# 字母異位單詞可以通過字典序判斷
res = dict() # {k : v},其中k爲按字典序排序後的字符串,v爲相同字典序字符串的數組
for word in strs:
key = ''.join(sorted(word))
if key in res.keys():
res[key].append(word)
else:
res[key] = [word]
return list(res.values())