49 字母異位詞分組

2022-09-09 03:54:08 字數 1061 閱讀 7380

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

示例:

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

["ate","eat","tea"],

["nat","tan"],

["bat"]

]

題目簡單,但是有些值得記錄。

思路:當且僅當它們的排序字串相等時,兩個字串是字母異位詞。

1

#排序後的字串作為鍵值

2class

solution(object):

3def

groupanagrams(self, strs):

4from collections import

defaultdict

5 ans =collections.defaultdict(list)

6for s in

strs:78

#9return ans.values()

補:1、count字元出現數,再由長度為26的列表計數(a-z數量)→轉元祖作為鍵值。

2、美版leetcode有人用不同質數表示26個字母,相乘作為鍵值。

判斷是否為質數思路:

對正整數n,如果用2到√n之間的所有整數去除,均無法整除,則n為質數

1

from math import

sqrt2#

定義乙個是否素數函式,如果n等於1,則返回false

3def

is_prime(n):

4if n == 1:

5return

false

6for i in range(2,int(sqrt(n))+1):

7if n%i ==0:

8return

false

9return true

49 字母異位詞分組

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。思路 這個題的思路非常清晰,遍歷字串陣列,對其中每乙個...

49 字母異位詞分組

arrays.sort排序的時間複雜度為o slogs 外面還有n次迴圈,總共為nslogs,s為字串的長度。空間複雜度為o ns hashmap儲存了每個字串 1 我對arraylist操作不熟,還有arrays.sort 得趕緊學習了 2 乙個字串會有原始字元,所以只要知道原始字元,原始字元下一...

49 字母異位詞分組

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 1.對每個子串排序生成乙個新的陣列,構造乙個字典d,遍歷新陣列往字典裡放 o nklogk o nk 2...