第一章:经典动态规划:编辑距离

labuladong经典动态规划:编辑距离

72. 编辑距离

  • 在word1 和word2 前面分别插入"" 不仅可以包括字符串为空的情况,而且可以更清楚地用空字符串说明状态转移的过程
  • i 和 j 中,因为最前面加了"", 因此第i个字符的下标为i-1
    • 若两个字符相等(word1[i-1]==word2[j-1]),则i和j分别继续向右跳一格
    • 若不相等,则增(dp[i][j-1],如第0行),改(dp[i-1][j-1]),删(dp[i-1][j],如第0列)的最小操作数 +1
class Solution(object):
    def minDistance(self, word1, word2):
        m=len(word1)+1
        n=len(word2)+1
        dp=[[0 for _ in range(n)] for _ in range(m)]
        for j in range(1,n):
            dp[0][j]=j
        for i in range(1,m):
            dp[i][0]=i


        for i in range(1,m):
            for j in range(1,n):
                if word1[i-1]==word2[j-1]:
                    dp[i][j]=dp[i-1][j-1]
                else:
                    dp[i][j]=min(dp[i][j-1],dp[i-1][j],dp[i-1][j-1])+1
        return dp[-1][-1]

   转载规则


《第一章:经典动态规划:编辑距离》 M 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
第一章:经典动态规划:最长公共子序列 第一章:经典动态规划:最长公共子序列
labuladong经典动态规划:最长公共子序列 1143. 最长公共子序列(在dp数组中添加0行和0列可以包含text为空的情况,并且更便于状态转移) dp数组的含义: 对于 text1[0..i-1] 和 text2[0..j-1],
2020-07-31
下一篇 
第一章:动态规划设计:最大子数组 第一章:动态规划设计:最大子数组
labuladong动态规划设计:最大子数组 53. 最大子序和 课堂上,学生排排坐。 老师:“这门课的作业,你们可以选择自己完成,也可以根据座位顺序,和你前面的同学组队(前面的同学可能和前前面的同学组了队,也可能就他一个人)。” 每个
2020-07-29
  目录