Skip to content

Commit 07b9eed

Browse files
committed
Time: 102 ms (58.50%), Space: 44.8 MB (65.08%) - LeetHub
1 parent 84568bc commit 07b9eed

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* @param {string} s1
3+
* @param {string} s2
4+
* @param {string} s3
5+
* @return {boolean}
6+
*/
7+
8+
var isInterleave = function(s1, s2, s3) {
9+
const l1 = s1.length, l2 = s2.length, l3= s3.length;
10+
if(l3 !== l2 + l1) return false;
11+
let m = new Map();
12+
const check = (p1,p2,p3) => {
13+
if(l1 === p1) return s2.slice(p2) === s3.slice(p3);
14+
if(l2 === p2) return s1.slice(p1) === s3.slice(p3);
15+
const k = `${p1}-${p2}`
16+
if(m.has(k)) {
17+
return m.get(k);
18+
}
19+
let res = false;
20+
if(s1[p1] === s3[p3] && s2[p2] === s3[p3]) res = check(p1+1, p2, p3+1) || check(p1, p2+1, p3+1);
21+
else if(s1[p1] === s3[p3]) res = check(p1+1, p2, p3+1);
22+
else if(s2[p2] === s3[p3]) res = check(p1, p2+1, p3+1);
23+
m.set(k, res);
24+
return res;
25+
}
26+
27+
28+
return check(0,0,0);
29+
30+
};

0 commit comments

Comments
 (0)