1143. 最长公共子序列1143. 最长公共子序列 + 动态规划 + LCS
时间:2021-03-16 11:55:59
收藏:0
阅读:0
1143. 最长公共子序列
LeetCode_1143
题目描述

题解分析
- 求最长公共子序列主要需要考虑两种情况。
- 第一种是当前位置的两个字符相同,那么当前最长公共子串就是dp[i-1][j-1]+1。
- 第二种是当前位置的两个字符不同,那么当前最长公共子串长度就是两个串各退一个字符后的最大长度。
代码实现
class Solution {
public int longestCommonSubsequence(String text1, String text2) {
int m = text1.length();
int n = text2.length();
int[][] dp = new int[m+1][n+1];
for(int i=1; i<=m; i++){
for(int j=1; j<=n; j++){
if(text1.charAt(i-1) == text2.charAt(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[m][n];
}
}
评论(0)