Interleaving String LeetCode solution in JavaScript

1
var isInterleave = function (s1, s2, s3) {
2
const dp = new Map();
3
const solve = (a = 0, b = 0, c = 0) => {
4
if (c == s3.length) return a == s1.length && b == s2.length;
5
const key = [a, b, c].join(":");
6

7
if (dp.has(key)) {
8
// console.log('hit');
9
return dp.get(key);
10
}
11

12
let takeS1 = false,
13
takeS2 = false;
14
if (s1[a] == s3[c]) takeS1 = solve(a + 1, b, c + 1);
15
if (s2[b] == s3[c]) takeS2 = solve(a, b + 1, c + 1);
16

17
dp.set(key, takeS1 || takeS2);
18
return takeS1 || takeS2;
19
};
20
return solve();
21
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0