454,字母異位詞分組

2022-09-18 09:39:18 字數 1316 閱讀 7391

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

示例:

輸入:[「eat」, 「tea」, 「tan」, 「ate」, 「nat」, 「bat」]

輸出:

[「ate」,「eat」,「tea」],

[「nat」,「tan」],

[「bat」]

說明:先排序再判斷今天這道題比較簡單,字母異位詞就是兩個字串中的字母都是一樣的,只不過順序被打亂了,這裡要把他們找出來,然後放到一起。既然字母異位詞的字母都是一樣的,可以對字串中的字元進行排序,生成乙個新的字串,如果生成新的字串相同,那麼他們就是字母異位詞。**比較簡單,來看下

public list

>

groupanagrams

(string[

] strs)

//最後返回

return

newarraylist

<

>

(map.

values());}

統計每個字母的個數題目中說了所有輸入均為小寫字母,所以還可以只用乙個陣列,統計字串中每個字元的個數,最終會生成乙個新的字串,如果生成新的字串相同,說明他們是字母異位詞,畫個圖看一下

可以看到,只要是字母異位詞,通過上面的方式轉換,他們生成的字串都是一樣的

public list

>

groupanagrams

(string[

] strs)

return

newarraylist

<

>

(map.

values());}

總結由相同的字母組成的字串才是字母異位詞,既然有相同的字母,直接把他們排序是最容易想到的,所以第一種方式一般都能想到。第二種方式通過統計每個字元出現的次數,然後再把統計的結果轉化為字串也是可以實現的。

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...