剑指 Offer II 095. 最长公共子序列
class Solution {
public int longestCommonSubsequence(String text1, String text2) {
//dp[i][j]表示text1长度为i时,text2长度为j时的公共子序列的最大长度
int n = text1.length();
int m = text2.length();
int[][] dp = new int[n+1][m+1];
for(int i=1;i<n+1;i++){
for(int j=1;j<m+1;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[n][m];
}
}
本文解析了剑指 Offer II 中关于最长公共子序列的 Java 代码实现,通过动态规划方法求解字符串间的最长公共子序列长度。详细讲解了 dp 数组的构建过程和状态转移方程,适用于面试中算法题目的理解与解答。
992

被折叠的 条评论
为什么被折叠?



