Distinct Subsequences LeetCode solution in JavaScript
1var numDistinct = function (s, t) {2const n = s.length;34const memo = {};5const dfs = (index = 0, subsequence = "") => {6if (subsequence === t) return 1;7if (n - index + 1 < t.length - subsequence.length) return 0;8if (index === n) return 0;910const key = `${index}-${subsequence}`;11if (key in memo) return memo[key];1213memo[key] =14t[subsequence.length] !== s[index]15? 016: dfs(index + 1, subsequence + s[index]);17memo[key] += dfs(index + 1, subsequence);18return memo[key];19};2021return dfs();22};