题目描述
题目思路
如图
如果两个字符串相等,则dp[i][j]=dp[i-1][j-1]+1,表示前面的第i,j个字符前相等的个数加1
不相等则选最大
/**
* @param {string} text1
* @param {string} text2
* @return {number}
*/
var longestCommonSubsequence = function(text1, text2) {
let m = text1.length+1
let n = text2.length+1
var dp = new Array(m).fill(0).map(()=>new Array(n).fill(0))
for(let i = 1;i<m;i++){
for(let j = 1;j<n;j++){
if(text1.charAt(i-1) === text2.charAt(j-1)){//如果相等,左上角+1
dp[i][j] = dp[i-1][j-1]+1
}
else{
dp[i][j] = Math.max(dp[i][j-1],dp[i-1][j])//如果不相等,则左和上选最大
}
}
}
return dp[m-1][n-1]
};