打敗演算法 字母異位詞分組

2022-10-08 21:45:21 字數 969 閱讀 1632

本文參考

出自leetcode上的題庫 —— 字母異位詞分組,本題考察雜湊表的應用

字串解碼問題

給你乙個字串陣列,請你將字母異位片語合在一起。可以按任意順序返回結果列表

字母異位詞是由重新排列源單詞的字母得到的乙個新單詞,所有源單詞中的字母通常恰好只用一次

示例1:

輸入:strs = ["eat", "tea", "tan", "ate", "nat", "bat"]

輸出:[["bat"],["nat","tan"],["ate","eat","tea"]]

示例 2:

輸入:strs = [""]

輸出:[[""]]

示例 3:

輸入:strs = ["a"]

輸出:[["a"]]

解題思路

本題的關鍵是如何設計雜湊表的鍵,讓異位詞對映到同乙個鍵下,因為題目還附加了"只有小寫字母"的條件,所以可以構造大小為26的列表,每個索引記錄字母出現的次數,並將這個list作為鍵,實現異位詞的對映

雜湊表解法

import

collections

class

solution:

def

group_anagrams(self

, strs: list[str]) -> list[list[str]]:

mp = collections.defaultdict(list

)for

s in

strs:

count = [0] * 26

for

c in

s:count[ord

(c) - ord

('a')] += 1

mp[tuple

(mp.values())

演算法 字母異位詞分組

題目 給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 本題很明顯是用 hash 來實現的。只是怎麼做可能有一點點繞吧 string 轉為 char 排序...

演算法 字母異位詞分組

題目 字母異位詞分組 給你乙個字串陣列,請你將 字母異位詞 組合在一起。可以按任意順序返回結果列表。字母異位詞 是由重新排列源單詞的字母得到的乙個新單詞,所有源單詞中的字母通常恰好只用一次。示例 1 輸入 strs eat tea tan ate nat bat 輸出 bat nat tan ate...

字母異位詞分組

超出時間限制 依次遍歷陣列中每乙個字串,與list中每乙個templist中的第乙個進行對比,如果長度不相等即為不合格,如果list走到了結尾,字串肯定不包含與list中,新增成為list中新的一員。如果與templist中一樣則為新增為templist中一員 但是超出時間限制 public lis...