/**
* @param {string} s
* @param {string[]} wordDict
* @return {boolean}
*/
let wordBreak = function (s, wordDict) {
let n = s.length
if (!n) return true
let wordSet = new Set(wordDict)
let dp = []
dp[0] = true
for (let i = 0; i <= n; i++) {
for (let j = i; j >= 0; j--) {
let word = s.slice(j, i)
if (wordSet.has(word) && dp[j]) {
dp[i] = true
break
}
}
}
return !!dp[n]
}