leetcode筆記 139單詞拆分

2021-09-11 06:28:36 字數 1250 閱讀 2819

題目:

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

說明:

示例 1:

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

輸出: true

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

示例 2:

輸出:true

示例 3:

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

輸出: false

以下的**採用的是動態優化的思想。首先設定乙個字元陣列dp,其中dp[i]表示前i個字串能不能被dict完美劃分,如果可以的話,就將其值設定為true;設定dp[0]為true,dp[i]能否被完美劃分與兩部分有關,乙個是dp[j](0<=j**1:

class solution

}return dp[len];

}**2:

這個問題可以看成是乙個完全揹包問題的變形,將**寫在下面。但是這個**的執行時間比最快**要慢。

這個體重是乙個涉及到順序的揹包問題,需要把對揹包重量的迭**在外迴圈,將對物品的迭**在內迴圈

public boolean wordbreak(string s, listworddict) }}

return dp[n];

}執行最快的**:

和**1的思路基本上是一致的。但是在一些地方做了優化。首先對於j是從後往前進行判斷,其次是j的範圍,不再是j=0)。

class solution 

// memo[i] 表示 s 中以 i - 1 結尾的字串是否可被 worddict 拆分

boolean memo = new boolean[n + 1];

memo[0] = true;

for (int i = 1; i <= n; i++) }}

return memo[n];

}}

LeetCode筆記 139 單詞拆分

首先使用動態規劃的方法來校驗字串是否可以拆分成字典裡的單次,然後使用dfs的方法來獲得所有可能的拆分結果。class solution return false vector wordbreak string s,vector worddict if flag s.size return answe...

leetcode 139 單詞拆分

題目 給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,確定 s 是否可以被空格分割為乙個或多個在字典裡出現的單詞。你可以假設字典中無重複的單詞。例如,給出 s leetcode dict leet code 返回 true 因為 leetcode 可以被切分成 leet cod...

leetcode139 單詞拆分

給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,判定 s 是否可以被空格拆分為乙個或多個在字典中出現的單詞。說明 拆分時可以重複使用字典中的單詞。你可以假設字典中沒有重複的單詞。示例 1 輸入 s leetcode worddict leet code 輸出 true 解釋 返...