二维动态规划
class Solution {
public:
int longestCommonSubsequence(string text1, string text2) {
int m=text1.length(),n=text2.length();
vector<vector<int>> dp(m+1,vector<int>(n+1,0)); //dp[i][j]表示当前位置下匹配最多的字符串数
for(int i=1;i<m+1;i++){ //i和j分别表示字符串text1和text2内在某一刻的位置
for(int j=1;j<n+1;j++){
if(text1[i-1]==text2[j-1]) dp[i][j]=dp[i-1][j-1]+1; //i和j对应的字符相同
else{
dp[i][j]=max(dp[i-1][j],dp[i][j-1]); //不等时,到达(i,j)的路径有两条(i-1,j)或(i,j-1)
}
}
}
return dp[m][n];
}
};