zoukankan      html  css  js  c++  java
  • 72编辑距离

    题目: 给定两个单词 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
  • 相关阅读:
    idea的svn安装
    工作面板视图
    maven的profile
    web 对接 platform
    jdk动态代理在idea的debug模式下不断刷新tostring方法
    jdk动态代理
    springboot获得应用上下文
    数据库时间日期区别
    Java的date和string互转
    httpclient中文乱码
  • 原文地址:https://www.cnblogs.com/xxswkl/p/12128927.html
Copyright © 2011-2022 走看看