leetcode 字母異位詞分組

2022-03-13 04:43:06 字數 784 閱讀 8460

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

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

輸出:[

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

["nat","tan"],

["bat"]

]說明:

所有輸入均為小寫字母。

不考慮答案輸出的順序。

分析:兩個方法

1.對每個單詞進行字典序排序,排序結果相同的自然是同一分組

時間複雜度:o(n*k*log k),k為最長單詞長度

空間複雜度:o(n*k)

2.對每個單詞按計數分類

可以採用map,也可以採用陣列,建議利用素數的性質來使用陣列進行計數

每個小寫字元對應乙個素數,素數相乘的結果和素數乘的先後順序無關,所以對每個單詞可以生成乙個特徵碼,只要單詞中的字元的數量和種類相同,那麼生成的特徵碼也是一樣的

時間複雜度:o(n*k)

空間複雜度:o(n)

class

solution ;

for(int i=0;i)

mm[ans].push_back(str[i]);

}for(it=mm.begin();it!=mm.end();it++)

return

vv;}

};

leetcode 字母異位詞分組

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 hash map.一種更好的思路是用素數表示26個字母,然後用map。class solution...

leetcode 字母異位詞分組

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。分析 兩個方法 1.對每個單詞進行字典序排序,排序結果...

LeetCode 字母異位詞分組

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。解 錯位詞就是兩個字串中字母出現的次數都一樣,只是位置...