Longest Common Subsequence LeetCode solution in JavaScript

1
/**
2
* @param {string} text1
3
* @param {string} text2
4
* @return {number}
5
*/
6
let memo;
7
const dp = (a, b, i, j) => {
8
if (i === 0 || j === 0) return 0;
9
if (memo[i][j] != -1) return memo[i][j];
10
if (a[i - 1] === b[j - 1]) {
11
return (memo[i][j] = 1 + dp(a, b, i - 1, j - 1));
12
} else {
13
return (memo[i][j] = Math.max(dp(a, b, i - 1, j), dp(a, b, i, j - 1)));
14
}
15
};
16
const bottomUp = (a, b) => {
17
for (let i = 1; i <= a.length; i++) {
18
for (let j = 1; j <= b.length; j++) {
19
if (a[i - 1] === b[j - 1]) {
20
memo[i][j] = 1 + memo[i - 1][j - 1];
21
} else {
22
memo[i][j] = Math.max(memo[i - 1][j], memo[i][j - 1]);
23
}
24
}
25
}
26

27
return memo[a.length][b.length];
28
};
29

30
var longestCommonSubsequence = function (text1, text2) {
31
memo = [];
32
for (let i = 0; i <= text1.length; i++) {
33
memo[i] = [];
34
for (let j = 0; j <= text2.length; j++) {
35
if (i === 0 || j === 0) memo[i][j] = 0;
36
else memo[i][j] = -1;
37
}
38
}
39
return bottomUp(text1, text2, text1.length, text2.length);
40
// return dp(text1,text2,text1.length,text2.length);
41
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0