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

    给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。

    你可以对一个单词进行如下三种操作:

    插入一个字符
    删除一个字符
    替换一个字符

    示例 1:

    输入:word1 = "horse", word2 = "ros"
    输出:3
    解释:
    horse -> rorse (将 'h' 替换为 'r')
    rorse -> rose (删除 'r')
    rose -> ros (删除 'e')
    示例 2:

    输入:word1 = "intention", word2 = "execution"
    输出:5
    解释:
    intention -> inention (删除 't')
    inention -> enention (将 'i' 替换为 'e')
    enention -> exention (将 'n' 替换为 'x')
    exention -> exection (将 'n' 替换为 'c')
    exection -> execution (插入 'u')

    class Solution:
        def minDistance(self, word1: str, word2: str) -> int:
            n1, n2 = len(word1), len(word2)
            dp = [[0 for i in range(n2+1)] for j in range(n1+1)]   # 初始化dp数组
            for i in range(n1+1):                                  # 空字符串到每个word1子串的编辑距离
                dp[i][0] = i
            for j in range(n2+1):                                  # 空字符串到每个word2子串的编辑距离
                dp[0][j] = j
            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]                     
                    else:
                        dp[i][j] = min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+1 # 由插入、删除、变换得到  
            return dp[n1][n2]
    

    input:
    "horse"
    "ros"
    output: 3
    递推过程:
    i=1, j=1, h, r, 1
    i=1, j=2, h, ro, 2
    i=1, j=3, h, ros, 3
    i=2, j=1, ho, r, 2
    i=2, j=2, ho, ro, 1
    i=2, j=3, ho, ros, 2
    i=3, j=1, hor, r, 2
    i=3, j=2, hor, ro, 2
    i=3, j=3, hor, ros, 2
    i=4, j=1, hors, r, 3
    i=4, j=2, hors, ro, 3
    i=4, j=3, hors, ros, 2
    i=5, j=1, horse, r, 4
    i=5, j=2, horse, ro, 4
    i=5, j=3, horse, ros, 3

  • 相关阅读:
    软能力
    git 使用命令
    jQuery插件stickup.js 源码解析初步
    HTML不常用的标签
    HTML笔记
    can't load XRegExp twice in the same frame
    IE8 不支持Date.now()
    href="#" href="javascript:void(0);" href="###"
    前端源码-部分资源
    javascript笔记
  • 原文地址:https://www.cnblogs.com/sandy-t/p/13287279.html
Copyright © 2011-2022 走看看