1. 程式人生 > 其它 >python-Django 遇到的問題總結(一)

python-Django 遇到的問題總結(一)

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())