Problems
0472 - Concatenated Words
Easy
/**
 * @param {string[]} words
 * @return {string[]}
 */
var findAllConcatenatedWordsInADict = function (words) {
    let wordSet = new Set(words);
    let res = [];

    for (let w of words) {
        if (dfs(w)) {
            res.push(w);
        }
    }

    return res;

    /**
     *
     * @param {string} word
     * @returns {boolean}
     */
    function dfs(word) {
        for (let i = 1; i < word.length; i++) {
            let prefix = word.slice(0, i);
            let suffix = word.slice(i, word.length);

            if (
                (wordSet.has(prefix) && wordSet.has(suffix)) ||
                (wordSet.has(prefix) && dfs(suffix))
            ) {
                return true;
            }
        }
        return false;
    }
};