力扣:583. 两个字符串的删除操作

Posted qq_32036091

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣:583. 两个字符串的删除操作相关的知识,希望对你有一定的参考价值。

题源: 583. 两个字符串的删除操作

本题要求经过删除之后两个字符串相等,求解最少的操作次数。根据贪心思想,最后剩余的字符串越长,删除操作越少。那么该题也就转化成了求两个字符串的最大公共子序列长度即可。

最长公共子序列的递推公式:

具体代码:

def minDistance(word1, word2):
    n, m = len(word1), len(word2)
    # dp = [[0] * (m + 1) for _ in range(n + 1)]
    dp = [[0 for _ in range(m+1)] for __ in range(n+1)]
    for i in range(1, n+1):
        for j in range(1, m+1):
            if word1[i-1] == word2[j-1]:
                dp[i][j] = dp[i-1][j-1] + 1
            else:
                dp[i][j] = max(dp[i-1][j], dp[i][j-1])
    return n + m - dp[n][m]

以上是关于力扣:583. 两个字符串的删除操作的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 583.两个字符串的删除操作

583. 两个字符串的删除操作

leetcode 583. 两个字符串的删除操作

字符串583. 两个字符串的删除操作

动态规划583. 两个字符串的删除操作

583. 两个字符串的删除操作最长公共子串