一、问题
二、分析
典型的动态规划问题,构造二维数组,从左上角到右下角依次对比。
其中构造二维数组使用了Array.from方法:
三、代码
/**
* @param {string} text1
* @param {string} text2
* @return {number}
*/
var longestCommonSubsequence = function(text1, text2) {
const l1 = text1.length;
const l2 = text2.length;
let dp = Array.from({ length: l1 + 1}, () => new Array(l2+1).fill(0));
for(let i = 1; i <= l1; i++){
for(let j = 1; j <= l2; j++){
if(text1[i - 1] == text2[j - 1]){
dp[i][j] = dp[i - 1][j - 1] + 1;
} else {
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
}
}
}
return dp[l1][l2];
};