1. 程式人生 > >LeetCode---139. Word Break

LeetCode---139. Word Break

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];
    }
}