码迷,mamicode.com
首页 > 其他好文 > 详细

72编辑距离

时间:2020-01-01 17:15:26      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:第一个   show   题目   onclick   pen   http   hide   第一个字符   转换   

题目: 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:
    插入一个字符,删除一个字符,替换一个字符

来源: https://leetcode-cn.com/problems/edit-distance/

法一:

技术图片
class Solution:
    def minDistance(self, word1: str, word2: str) -> int:
        n1 = len(word1)
        n2 = len(word2)
        dp = [[0] * (n2 + 1) for _ in range(n1 + 1)]
        # 第一行
        for j in range(1, n2 + 1):
            dp[0][j] = dp[0][j-1] + 1
        # 第一列
        for i in range(1, n1 + 1):
            dp[i][0] = dp[i-1][0] + 1
        for i in range(1, n1 + 1):
            for j in range(1, n2 + 1):
                # 先取第一个字符串的第一个字符,逐个和第二个字符串的字符比较.如果相等,则不需要任何操作,
                if word1[i-1] == word2[j-1]:
                    dp[i][j] = dp[i-1][j-1]
                # 如果不相等,则必须要经过插入删除替换中的一种操作来使两个字符相等,即后面的加1,至于选择哪一种
                # 当然都可以,只不过题目要求操作次数最少,就选最少的
                else:
                    dp[i][j] = min(dp[i][j-1], dp[i-1][j], dp[i-1][j-1] ) + 1
        print(dp)
        return dp[-1][-1]
if __name__ == __main__:
    duixiang = Solution()
    a = duixiang.minDistance(appl,apple)
    print(a)
View Code

72编辑距离

标签:第一个   show   题目   onclick   pen   http   hide   第一个字符   转换   

原文地址:https://www.cnblogs.com/xxswkl/p/12128927.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!