链接:https://leetcode-cn.com/problems/longest-common-subsequence/
比较经典的DP问题。创建二维数组
,
表示
与
的最长公共子序列。
转移方程为:
1. 当
时,
2. 当
时,
java代码:
class Solution {public int longestCommonSubsequence(String text1, String text2) {int len1 = text1.length();int len2 = text2.length();int dp[][] = new int [len1+1][len2+1];for(int i = 0;i<len1;i++){for(int j = 0;j<len2;j++){if(text1.charAt(i) == text2.charAt(j))dp[i+1][j+1] = dp[i][j]+1;else dp[i+1][j+1] = Math.max(dp[i][j+1],dp[i+1][j]);}}return dp[len1][len2];}
}