JSFiddle - React, Tailwind, and code Playground
JavaScript
var wordBreak = function(s, wordDict) {
return canWordBreak(s, 0, wordDict);
};
const dp = {};
const canWordBreak = (word, index, wordDict) => {
if (index === word.length) {
return dp[index] = true;
}
if (dp[index] !== undefined) {
return dp[index];
}
for (let breakIndex = index + 1; breakIndex <= word.length; breakIndex++) {
if (wordDict.indexOf(word.substring(index, breakIndex)) > -1 && canWordBreak(word, breakIndex, wordDict)) {
return dp[index] = true;
}
}
return dp[index] = false;
}
console.log(wordBreak("catsandog", ["cats","dog","sand","and","cat"]));