Leetcode 49 字母異位分詞

2022-01-29 18:57:45 字數 1101 閱讀 8134

49. 字母異位詞分組

兩個for迴圈,分別判斷兩個字串出現的字母個數是否相同,相同加入同乙個list。時間複雜度基本等於o(n^2),leetcode上提交是超時的。

對暴力法進行改進,利用list記錄字串出現的字母個數相同的字串,同時利用hash表記錄list在ans二維列表的下標,這樣只需要遍歷一遍陣列即可。

問題來了:hash表的值是下標,那hash表的鍵值該如何表示?

利用大小為26的陣列,並初始化值為-1,統計每個字母出現的次數,如果兩個字串符合要求,那麼兩個字串對應的陣列一定是相同的,所以由陣列值轉換成的字串也一定是相同的。所以hash表的鍵值為陣列值轉換成的字串

解法思路與2相同,首先為26個字元賦值為26個質數,因為質數與質數的乘積是唯一的,這符合hash表鍵值的要求。所以hash表的鍵值為對應字母的質數乘積。

class solution 

return count;

}public boolean test(int counta,int countb)

return true;

}public list> groupanagrams(string strs)

}ans.add(temp);

}return ans;}}

class solution 

return sb.tostring();

}public list> groupanagrams(string strs) else

}return ans;}}

class solution ;

for(string& s : strs)

for(auto& n : m) //n為鍵和值組成的pair

res.push_back(n.second);

return res;}};

leetcode 49 字母異位

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

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 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。這道題的意思就是把含有相同字母的單詞歸類而已,思路其實...