AcWing 237. 程式自動分析
阿新 • • 發佈:2022-04-12
49. 字母異位詞分組
知識點:字串;雜湊表
題目描述
給你一個字串陣列,請你將 字母異位詞 組合在一起。可以按任意順序返回結果列表。
字母異位詞 是由重新排列源單詞的字母得到的一個新單詞,所有源單詞中的字母通常恰好只用一次。
示例
示例 1:
輸入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
輸出: [["bat"],["nat","tan"],["ate","eat","tea"]]
示例 2:
輸入: strs = [""]
輸出: [[""]]
示例 3:
輸入: strs = ["a"]
輸出: [["a"]]
解法一:排序
字母異位詞就是說字串所含的字元一樣,並且每個字元的個數也是一樣的。
所以可以直接使用排序,字母異位詞排序完後肯定是一樣的,然後用一個雜湊表儲存就可以了
class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[str]]: hashtable = {} for cur_str in strs: sort_str = tuple(sorted(cur_str)) # 字典的key不能是列表 hashtable[sort_str] = hashtable.get(sort_str, []) + [cur_str] return list(hashtable.values())