字母異位詞分組

2021-10-02 15:34:03 字數 1382 閱讀 5994

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。

示例:輸入: [「eat」, 「tea」, 「tan」, 「ate」, 「nat」, 「bat」],

輸出:[

[「ate」,「eat」,「tea」],

[「nat」,「tan」],

[「bat」]

]說明:

所有輸入均為小寫字母。

不考慮答案輸出的順序。

在真實的面試中遇到過這道題?

class solution:

def groupanagrams(self, strs: list[str]) -> list[list[str]]:

result=

n=len(strs)

temp=

len_re=0

pop=

while len_re剛開始的想法是遍歷一遍找出一組字母相同但排列不同的字串。然後對於判別他們是否是字母相同但排列不同的字串

我是對於一組字串找出乙個標準,然後對於新的字串就通過刪除字元的方式進行對比,看是否字元相同。

class solution:

def groupanagrams(self, strs: list[str]) -> list[list[str]]:

from collections import defaultdict

lookup=defaultdict(list)

for i in strs:

return list(lookup.values())

這種思路是通過字典,把每個字串的標準排序作為key,把排序之後相同的加到一起。

最後輸出字典的values

class solution:

def groupanagrams(self, strs: list[str]) -> list[list[str]]:

from collections import defaultdict

lookup=defaultdict(list)

temp=[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103]

for i in strs:

key=1

for k in i:

key*=temp[ord(k)-97]

return list(lookup.values())

最後一種思路,就是利用的素數的乘積還是素數,而素數的銀子是唯一的,利用這個性質把乙個個字串轉化為乙個個素數作為索引,利用這個性質找出了字母相同但排列不同的字串。

字母異位詞分組

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

字母異位詞分組

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 思路 遍歷string陣列,對每個string排序,然後以鍵形式存入雜湊表中,雜湊表鍵為排序後的stri...

字母異位詞分組

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。具體解析 class solution return ...