leetcode139.单词拆分

leetcode139.单词拆分

题目

给你一个字符串 s 和一个字符串列表 wordDict 作为字典,判定 s 是否可以由空格拆分为一个或多个在字典中出现的单词。

说明:拆分时可以重复使用字典中的单词。

用例

输入: s = "leetcode", wordDict = ["leet", "code"]
输出: true
解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。
输入: s = "applepenapple", wordDict = ["apple", "pen"]
输出: true
解释: 返回 true 因为 "applepenapple" 可以被拆分成 "apple pen apple"。
     注意你可以重复使用字典中的单词。
输入: s = "catsandog", wordDict = ["cats", "dog", "sand", "and", "cat"]
输出: false

求解

/**
 * @param {string} s
 * @param {string[]} wordDict
 * @return {boolean}
 */
var wordBreak = function(s, wordDict) {
    let dp = new Array(s.length).fill(0)
    for(let i=0;i<s.length;i++){
        for(let j=-1;j<i;j++){
            //从前面字符串满足的最终位置进行截取看是否满足
            if(j==-1||dp[j]==1){
                let new_str = s.substr(j+1,i-j)
                //看子串是否能从字典中查找
                for(let p=0;p<wordDict.length;p++){
                    if(new_str==wordDict[p]){
                        dp[i]=1
                    }
                }
            }
        }
    }
    console.log(dp)
    if(dp[s.length-1]==1){
        return true
    }else{
        return false
    }
};
posted @ 2021-11-25 15:40  BONiii  阅读(34)  评论(0)    收藏  举报