leetcode49 字母異位次分組

2021-10-02 02:17:02 字數 1511 閱讀 5120

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

示例:

輸入:

["eat"

,"tea"

,"tan"

,"ate"

,"nat"

,"bat"],

輸出:[

["ate"

,"eat"

,"tea"],

["nat"

,"tan"],

["bat"

]]

說明:

所有輸入均為小寫字母。

不考慮答案輸出的順序。

遍歷整個字串陣列,將結果先放到map中,map的鍵是字母排序後的結果,值是字串陣列中原有的樣式

class

solution

for(

auto a : m)

return res;}}

;

算數相乘

參考:leetcode

算數基本定理:對於每個大於1的自然數,要麼是質數,要麼可以分解成質數乘積的形式。

利用上述基本定理,將字串中的每乙個字元,對應成乙個質數,求字串中的每乙個字元字元對應質數的乘積,該結果必然是唯一的,那麼乘積結果相同的放在乙個陣列裡。

記住這種思想,但在寫**實現的時候會出現最後幾個測試用例溢位,即使定義成long long型別也解決不了。

class

solution

; map<

long

long

,vector> m;

for(

int i =

0; i < strs.

size()

;++i)

m[s]

.push_back

(strs[i]);

}for

(auto a : m)

return res;}}

;

提交結果:

95

/101 個通過測試用例

狀態:執行出錯

執行出錯資訊:

line 12

: char 19

: runtime error:

signed integer overflow:71*

800384585750513951 cannot be represented in type 'long long int'

(solution.cpp)

最後執行的輸入:

["compilations"

,"bewailed"

,"horology"

,"lactated"

,"blindsided"

,"swoop"

,"foretasted"

,"ware"

,"abuts"

,"stepchild"

,"arr……

解法三

leetcode 49 字母異位

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。通過次數80,334提交次數129,632 思路 還是...

Leetcode 49 字母異位分詞

49.字母異位詞分組 兩個for迴圈,分別判斷兩個字串出現的字母個數是否相同,相同加入同乙個list。時間複雜度基本等於o n 2 leetcode上提交是超時的。對暴力法進行改進,利用list記錄字串出現的字母個數相同的字串,同時利用hash表記錄list在ans二維列表的下標,這樣只需要遍歷一遍...

LeetCode49 字母異位詞分組

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。設定乙個map向量,專門用來統計字串中,所有字元出現的...