動態規劃 139 單詞拆分問題

2021-09-25 00:04:38 字數 1084 閱讀 5207

給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,判定 s 是否可以被空格拆分為乙個或多個在字典**            現的單詞。

說明:拆分時可以重複使用字典中的單詞。

你可以假設字典中沒有重複的單詞。

示例 1:

輸入: s = "leetcode", worddict = ["leet", "code"]

輸出: true

解釋: 返回 true 因為 "leetcode" 可以被拆分成 "leet code"。

示例 2:

輸入: s = "catsandog", worddict = ["cats", "dog", "sand", "and", "cat"]

輸出: false

將非空字串s拆分為子串s1.....sn,這些字串均滿足再次拆分後,都是字典的一部分。則s符合條件。即子問題均滿足條件,原問題必滿足條件。

抽象出**的基本結構:

dp[0]=true;

以leetcode為例worddict=,dp[0]=true

dp[1]=dp[0]&&worddict.contans("l")=false.

dp[2]=dp[0]&&worddict.contans("le")=false.

dp[2]=dp[1]&&worddict.contans("e")=false.

到這裡就可以看明白,對於子串來說,仍然是切割出所有可分子串判別是否滿足條件,

後乙個的狀態和其之前的狀態相關,這就應該是動態規劃吧?

動態規劃法建議,與其對交疊子問題一次又一次的求解,不如把每個較小子問題只求解一次並把結果記錄在表中                       (動態規劃也是空間換時間的),這樣就可以從表中得到原始問題的解。

動態規劃需要表記錄子問題,原始問題的解,就在表中。

for(int i=1;i<=s.length;i++)}}

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

感覺對動態規劃還是不太理解,算是強行解釋吧!!!!

139 單詞拆分 動態規劃

難度 中等 題目描述 解題思路 cat cats true false false true true false false false false false sand true false false true true false false true false false true fa...

LeetCode 139 單詞拆分(動態規劃)

難度 中等 這道題的難點在於示例3,字串包含字典中的所有單詞,但是就是無法由字典中的單詞組成,要麼就是多個字元,要麼就是少個字元,所以在使用動態規劃方法的時候要考慮這種情況的發生。動態規劃 我們先考慮這樣乙個子問題 前i個子串是否能夠被字典中的單詞組成,如果可以的話,我們就在這個子串的位置做乙個標記...

Leetcode139 單詞拆分(動態規劃,遞迴)

重點1 判斷字串s是否在list中,即實現類似python中in方法 將list轉為set,然後用set的contains方法 list轉set setset new hashset worddict 實現 1 public boolean check string s,listworddict 解...