medium!
題目描述:
給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。
示例:
輸入:說明:["eat", "tea", "tan", "ate", "nat", "bat"]
,輸出:[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
解題思路:
這道題讓我們群組給定字串集中所有的錯位詞(異位詞),所謂的錯位詞就是兩個字串中字母出現的次數都一樣,只是位置不同,比如abc,bac, cba等它們就互為錯位詞,那麼我們如何判斷兩者是否是錯位詞呢,我們發現如果把錯位詞的字元順序重新排列,那麼會得到相同的結果,所以重新排序是判斷是否互為錯位詞的方法,由於錯位詞重新排序後都會得到相同的字串,我們以此作為key,將所有錯位詞都儲存到字串陣列中,建立key和字串陣列之間的對映,最後再存入結果res中即可。
c++解法一:
1class
solution
11for
(auto a : m)
14return
res;15}
16 };
下面這種解法沒有用到排序,提高了運算效率,我們用乙個大小為26的int陣列來統計每個單詞中字元出現的次數,然後將int陣列轉為乙個唯一的字串,跟字串陣列進行對映,這樣我們就不用給字串排序了。
c++解法二:
1class
solution
13for
(auto a : m)
16return
res;17}
18 };
LeetCode49 字母異位詞分組
給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。設定乙個map向量,專門用來統計字串中,所有字元出現的...
LeetCode 49 字母異位詞分組
給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。這道題的意思就是把含有相同字母的單詞歸類而已,思路其實...
LeetCode 49 字母異位詞分組
給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 此題輸入的是乙個字串陣列,遍歷該陣列,然後將每個字串排序,排序後的字串作為 鍵 存入雜湊表,對應的...