三次過 Lintcode 107 單詞拆分 I

2021-09-16 12:43:49 字數 725 閱讀 3722

給定字串 s 和單詞字典 dict,確定 s 是否可以分成乙個或多個以空格分隔的子串,並且這些子串都在字典中存在。

樣例 1:

輸入: "lintcode", ["lint", "code"]

輸出: true

樣例 2:

輸入: "a", ["a"]

輸出: true

首先我們要儲存的歷史資訊res[i]是表示到字串s的第i個元素為止能不能用字典中的詞來表示,我們需要乙個長度為n的布林陣列來儲存資訊。然後假設我們現在擁有res[0,...,i-1]的結果,我們來獲得res[i]的表示式。思路是對於每個以i為結尾的子串,看看他是不是在字典裡面以及他之前的元素對應的res[j]是不是true,如果都成立,那麼res[i]為true,寫成式子是

假設總共有n個字串,並且字典是用hashset來維護,那麼總共需要n次迭代,每次迭代需要乙個取子串的o(i)操作,然後檢測i個子串,而檢測是constant操作。所以總的時間複雜度是o(n^2)(i的累加仍然是n^2量級),而空間複雜度則是字串的數量,即o(n)。**如下:

public class solution }}

return dp[s.length()];}}

三次過 Lintcode 182 刪除數字

給出乙個字串 a,表示乙個 n 位正整數,刪除其中 k 位數字,使得剩餘的數字仍然按照原來的順序排列產生乙個新的正整數。找到刪除 k 個數字之後的最小正整數。n 240,k n 給出乙個字串代表的正整數 a 和乙個整數 k,其中a 178542,k 4 返回乙個字串 12 注意刪除數字的思路,一開始...

三次過 Lintcode 426 恢復IP位址

給乙個由數字組成的字串。求出其可能恢復為的所有ip位址。你的任務就是往這段字串中新增三個點,使它成為乙個合法的ip位址.返回所有可能的ip位址.樣例 1 輸入 25525511135 輸出 255.255.11.135 255.255.111.35 解釋 255.255.111.35 255.255...

三次過 Lintcode 136 分割回文串

給定乙個字串s,將s分割成一些子串,使每個子串都是回文串。返回s所有可能的回文串分割方案。給出 s aab 返回 aa b a a b dfs.那麼,對原字串的所有子字串的訪問順序是什麼呢,如果原字串是 abcd,那麼訪問順序為 a b c d cd bc bcd ab abc abcd,這是對於沒...