題目:
給定乙個非空字串 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 解釋 返...