两个求解代码类似的题目,对比记忆!!!
1143.最长公共子序列
法1:DP,考虑空串
Python
class Solution:
def longestCommonSubsequence(self, text1: str, text2: str) -> int:
m, n = len(text1), len(text2)
dp = [[0]*(n+1) for _ in range(m+1)] # dp[i][j]表示前i/j个公共长度
for i in range(1, m+1):
for j in range(1, n+1):
if text1[i-1] == text2[j-1]:
dp[i][j] = dp[i-1][j-1] + 1
else:
dp[i][j] = max(dp[i][j-1], dp[i-1][j])
return dp[m][n]
Java
class Solution {
public int longestCommonSubsequence(String text1, String text2) {
int m = text1.length() + 1, n = text2.length() + 1; // 加1是在构建二维矩阵时增加空串情况, 简化计算
int[

本文对比了两种使用动态规划解决最长公共子序列和最长回文子序列问题的Java代码实现,强调了考虑空串和不考虑空串两种方法的区别。
最低0.47元/天 解锁文章
2053

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



