LeetCode---139. Word Break
阿新 • • 發佈:2018-12-11
LeetCode—139. Word Break
題目
思路及解法
動態規劃的題目。 設dp[i]為前i個字元是否可以切割。一個字串S,它的長度為len,如果S能夠被“字典集合”(dict)中的單詞拼接而成,那麼所要滿足的條件為: dp[j] && dict.contains(s.substring(j, i)) 如果我們想知道某個子串是否可由dict中的幾個單詞拼接而成就可以用這樣的方式得到結果(滿足條件為True, 不滿足條件為False)存入到一個boolean陣列的對應位置上。需要注意的是,dp[]陣列在初始化時的長度應該是len+1,且第一個值為true
程式碼
class Solution { public boolean wordBreak(String s, List<String> wordDict) { int len = s.length(); boolean[] dp = new boolean[len+1]; dp[0] = true; for(int i=1; i<=len; i++){ for(int j=0; j<i; j++){ String tmp = s.substring(j, i); if(dp[j] && wordDict.contains(tmp)){ dp[i] = true; break; } } } return dp[len]; } }