給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。
示例:
輸入:
["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向量,專門用來統計字串中,所有字元出現的...