// 最长公共子序列
// 动态规划
public static int longestCommonSubsequence(String text1,String text2) {
int m=text1.length(),n=text2.length();
int[][] dp=new int[m+1][n+1];
// 0-i的公共子串
// 0-j的公共子串
for (int i = 1; i <=m; i++) {
char c1=text1.charAt(i-1);
for (int j = 1; j <=n; j++) {
char c2=text2.charAt(j-1);
if(c1==c2) {
// c1=c2,前一项的也是相等的才行所以dp[i-1]=dp[j-1]即:
dp[i][j]=dp[i-1][j-1]+1;
}else {
// c1!=c2,取最长的一个公共子串,可以是i-1,也可以是j-1
dp[i][j]=Math.max(dp[i-1][j],dp[i][j-1]);
}
}
}
return dp[m][n];
}