leetcode第140题单词拆分 II

69 阅读1分钟

题目: 给定一个字符串 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();
 }
}

解析 回溯法