給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。
示例:輸入: [「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 ...