Leetcode 745 字首和字尾搜尋 C

2021-10-08 17:52:55 字數 1213 閱讀 1134

給定多個 words,words[i] 的權重為 i 。

設計乙個類 wordfilter 實現函式wordfilter.f(string prefix, string suffix)。這個函式將返回具有字首 prefix 和字尾suffix 的詞的最大權重。如果沒有這樣的詞,返回 -1。

輸入:

wordfilter.f("a", "e") // 返回 0

wordfilter.f("b", "") // 返回 -1

注意:

words的長度在[1, 15000]之間。

對於每個測試用例,最多會有words.length次對wordfilter.f的呼叫。

words[i]的長度在[1, 10]之間。

prefix, suffix的長度在[0, 10]之前。

words[i]和prefix,suffix只包含小寫字母。

字典樹我們在構建字典樹的同時就把所有可能的前字尾進行組合,其中字尾我們放到前面,字首則採用完整的字串即可。這樣,我們在查詢時,先判斷字尾是否存在,再判斷字首是否存在,則dfs找符合要求的字串的最大權值。需要注意的是,為了區分前字尾,我們需要用乙個特殊的字元進行分割,這裡我們採用了};

trim* root;

wordfilter

(vector

& words)

now = now-

>next[x[k]

-'a'];

} now-

>isworld =

true

; now-

>value = i;}}

}int ans=-1

;void

dfs(trim* now)}}

intf

(string prefix, string suffix)

ans =-1

;dfs

(now)

;return ans;}}

;/**

* your wordfilter object will be instantiated and called as such:

* wordfilter* obj = new wordfilter(words);

* int param_1 = obj->f(prefix,suffix);

*/

745 字首和字尾搜尋

給定多個words,words i 的權重為i。設計乙個類wordfilter實現函式wordfilter.f string prefix,string suffix 這個函式將返回具有字首prefix和字尾suffix的詞的最大權重。如果沒有這樣的詞,返回 1。例子 輸入 wordfilter.f...

leetcode 523 560 字首和技巧

3 題解 leetcode523.連續的子陣列和 字首和的思路是這樣的,對於乙個給定的陣列 nums,我們額外開闢乙個字首和陣列進行預處理。int n nums.size 字首和陣列 presum i 就是nums 0.i 1 的和。那麼如果我們想求nums i.j 的和,只需要一步操作presum...

LeetCode 1652 拆炸彈(字首和)

你有乙個炸彈需要拆除,時間緊迫!你的情報員會給你乙個長度為 n 的 迴圈 陣列 code 以及乙個金鑰 k 為了獲得正確的密碼,你需要替換掉每乙個數字。所有數字會 同時 被替換。由於 code 是迴圈的,code n 1 下乙個元素是 code 0 且 code 0 前乙個元素是 code n 1 ...