题目: 给定一个字符串 s 和一个字符串字典 wordDict ,在字符串 s 中增加空格来构建一个句子,使得句子中所有的单词都在词典中。以任意顺序 返回所有这些可能的句子。
注意:词典中的同一个单词可能在分段中被重复使用多次。 题目链接
我的JavaScript解法
/**
* @param {string} s
* @param {string[]} wordDict
* @return {string[]}
*/
var wordBreak = function(s, wordDict) {
let result = [];
let track = [];
backtrack(s, 0, wordDict, track, result);
return result;
};
const backtrack = (s, i, wordDict, track, result) => {
if (i == s.length) {
result.push(track.join(' '));
return;
}
if (i > s.length) return;
for (let word of wordDict) {
let len = word.length;
if (i + len > s.length) continue;
let subStr = s.substring(i, i + len);
if(subStr != word) continue;
track.push(word);
backtrack(s, i + len, wordDict, track, result);
track.pop();
}
}
解析 回溯法