2707-extra-characters-in-a-string

DevGod needs to write a blog entry for this problem!
/**
 * @param {string} s
 * @param {string[]} dictionary
 * @return {number}
 */
var minExtraChar = function(s, dictionary) {
    let memo = new Map();
    let dicSet = new Set(dictionary);
    let helper = function(n){
        if(n == s.length){ return 0; }
        if(memo.has(n)){
            return memo.get(n);
        }

        //Only on char left -> right, leaving a duplicate
        //Worse Case Senario
        let ans = helper(n+1)+1;
        
        //See if a word could be taken out instead
        for(let prefix = n; prefix<s.length; prefix++){
            let curr = s.slice(n,prefix+1);
            if(dicSet.has(curr)){
                //skip forward, best case senario
                ans = Math.min(ans, helper(prefix + 1) );
            }
        }

        memo.set(n,ans);
        return ans;
    }

    return helper(0);

};