我的思路就是递归查找,对词典里的每个词尝试从起始位置进行匹配,如果匹配的话要看下是否进行到了终点,如果进行到终点则把结果加入结果集;如果没有则把当前词从字符串中剔除继续递归。
代码如下:
const wordBreak = (s, wordDict) => {
const result = [];
const recurse = (str, prevWords) => {
for (let word of wordDict) {
const wLen = word.length;
const test = str.slice(0, wLen);
if (test !== word) {
continue;
}
const theRest = str.slice(wLen);
if (!theRest) {
result.push([...prevWords, word]);
} else {
recurse(theRest, [...prevWords, word]);
}
}
}
recurse(s, []);
return result.map(comb => comb.join(' '));
};