https://leetcode-cn.com/problems/word-break
给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。
注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用
例子:
输入: s = “leetcode”, wordDict = [“leet”, “code”]
输出: true
解释: 返回 true 因为 “leetcode” 可以由 “leet” 和 “code” 拼接成。
思路:动态规划
设dp为一个数组,dp[i]表示在 [0, i]的字符是否存在在字典中。
对于dp[i],只要它前面的[0, i - 1]中存在一个dp[j]为true,且它剩余的[j, i]存在在字典中,那就代表dp[i]为true。
最后只要返回dp[n]就可以
var wordBreak = function(s, wordDict) {
let dp = new Array(s.length + 1).fill(false);
dp[0] = true;
for (let i = 1; i <= s.length; i++) {
for (let j = 0; j <= i - 1; j++) {
if (dp[j] && wordDict.includes(s.slice(j, i))) {
dp[i] = true;
}
}
}
return dp[s.length]
};