LeetCode 筆記 - 318. Maximum Product of Word Lengths
尋找不含相同字母的兩字串最大長度乘積。本文利用位元運算(Bitwise)進行加速,將字串的字母分佈壓縮成一個整數,透過 AND 運算即可秒速判斷是否有重複字母。這展示了位元技巧在優化字串比對任務上的強大威力。
⚠️ 舊文提醒:本文發佈於約 4 年前,部分內容或指令可能已過時,請斟酌參考。
題目在此 318. Maximum Product of Word Lengths
給定一個矩陣包含 n 個字串,請找出兩個字串的最大乘積且兩個字串之間不能有相同的字母
解題思維
這題會使用到 Bitwise operation 來加速
首先我們先把每一個字串根據字母分佈轉換成一個數字,意即相同的字母會在一樣的地方出現 1
所以當我們在兩兩配對的時候,就可以用 bit_set_0 & bit_set_1 來判斷是否有重疊的 1 出現
如果有,那就表示有相同的字母
如果沒有,那就表示這是符合規則的
最後的最後,取最大的結果回傳即可
完成 🥰
程式碼
1 | class Solution: |