2
* @param {string} text13
* @param {string} text27
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));13
return (memo[i][j] = Math.max(dp(a, b, i - 1, j), dp(a, b, i, j - 1)));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];22
memo[i][j] = Math.max(memo[i - 1][j], memo[i][j - 1]);27
return memo[a.length][b.length];30
var longestCommonSubsequence = function (text1, text2) {32
for (let i = 0; i <= text1.length; i++) {34
for (let j = 0; j <= text2.length; j++) {35
if (i === 0 || j === 0) memo[i][j] = 0;39
return bottomUp(text1, text2, text1.length, text2.length);40
// return dp(text1,text2,text1.length,text2.length);