如何正确实施动态规划解决方案以使用后缀编辑距离?

问题描述

我正在尝试为编辑距离实施表格 dp 解决方案。这是一个leetcode问题。我的想法是使用后缀而不是前缀,并返回两个单词开头的后缀。

然而,它在 word1 = "horse" 和 word2 = "ros" 的情况下低于要求。它返回 2 而不是 3,这是正确的解决方案。就我的代码而言,这应该是对第一个单词的 3 次操作:删除 e、删除 r 和将 h 切换为 r。

如果有人能帮助我解决我在实施过程中遗漏或误解的地方,那将会很有帮助。我的第一直觉是我的 if-else 子句遗漏了一些东西。

    def mindistance(self,word1: str,word2: str) -> int:
        dp = [[0 for j in range(len(word2)+1)] for i in range(len(word1)+1)]
        for i in range(len(word1)-1,-1,-1):
            for j in range(len(word2)-1,-1):
                if word1[i] == word2[j]:
                    dp[i][j] = dp[i+1][j+1]
                else:
                    dp[i][j] = 1 + min(dp[i+1][j+1],dp[i][j+1],dp[i+1][j])
                    
        return dp[0][0]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)