算法笔记14:单词拆分 II

255 阅读1分钟

140.单词拆分 II

我的思路就是递归查找,对词典里的每个词尝试从起始位置进行匹配,如果匹配的话要看下是否进行到了终点,如果进行到终点则把结果加入结果集;如果没有则把当前词从字符串中剔除继续递归。

代码如下:

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(' '));
};