1143. 最长公共子序列

思路:动态规划
dp[i][j] 表示text1的前i个数和text2的前j个数的公共子序列。
在这里插入图片描述
时间复杂度:O(n2
空间复杂度:O(mn)

def longestCommonSubsequence(str1, str2) -> int:
    m, n = len(str1), len(str2)
    dp = [[0] * (n + 1) for _ in range(m + 1)]  # 初始值
    for i in range(1, m + 1):
        for j in range(1, n + 1):
            if str1[i - 1] == str2[j - 1]:
                dp[i][j] = 1 + dp[i-1][j-1]
            else:
                dp[i][j] = max(dp[i-1][j], dp[i][j-1])
        
    return dp[-1][-1]

发布了135 篇原创文章 · 获赞 5 · 访问量 7102

猜你喜欢

转载自blog.csdn.net/qq_27921205/article/details/104412520