Interleaving String LeetCode solution in JavaScript
1var isInterleave = function (s1, s2, s3) {2const dp = new Map();3const solve = (a = 0, b = 0, c = 0) => {4if (c == s3.length) return a == s1.length && b == s2.length;5const key = [a, b, c].join(":");67if (dp.has(key)) {8// console.log('hit');9return dp.get(key);10}1112let takeS1 = false,13takeS2 = false;14if (s1[a] == s3[c]) takeS1 = solve(a + 1, b, c + 1);15if (s2[b] == s3[c]) takeS2 = solve(a, b + 1, c + 1);1617dp.set(key, takeS1 || takeS2);18return takeS1 || takeS2;19};20return solve();21};