题目描述

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

思路题解

https://leetcode-cn.com/problems/edit-distance/solution/bian-ji-ju-chi-by-leetcode-solution/
状态拆解为3个状态,进行分析:

对“dp[i-1][j-1] 表示替换操作,dp[i-1][j] 表示删除操作,dp[i][j-1] 表示插入操作。”的补充理解:

以 word1 为 “horse”,word2 为 “ros”,且 dp[5][3] 为例,即要将 word1的前 5 个字符转换为 word2的前 3 个字符,也就是将 horse 转换为 ros,因此有:

  • (1) dp[i-1][j-1],即先将 word1 的前 4 个字符 hors 转换为 word2 的前 2 个字符 ro,然后将第五个字符 word1[4](因为下标基数以 0 开始) 由 e 替换为 s(即替换为 word2 的第三个字符,word2[2])
  • (2) dp[i][j-1],即先将 word1 的前 5 个字符 horse 转换为 word2 的前 2 个字符 ro,然后在末尾补充一个 s,即插入操作
  • (3) dp[i-1][j],即先将 word1 的前 4 个字符 hors 转换为 word2 的前 3 个字符 ros,然后删除 word1 的第 5 个字符

dp初始状态:

状态转移方程:

class Solution:def minDistance(self, word1: str, word2: str) -> int:n,m = len(word1),len(word2)if n * m == 0:# 有一个字符串为空串return n + mD = [ [0] * (m + 1) for _ in range(n + 1)]# 边界状态初始化for i in range(n + 1):D[i][0] = ifor j in range(m + 1):D[0][j] = j# 计算所有 DP 值for i in range(1, n + 1):for j in range(1, m + 1):if word1[i - 1] != word2[j - 1]:D[i][j]=min(D[i-1][j]+1,D[i][j-1]+1,D[i-1][j-1]+1) else:D[i][j]=min(D[i-1][j]+1,D[i][j-1]+1,D[i-1][j-1]) return D[n][m]

【力扣72. 编辑距离】dp(Python3)相关推荐

  1. LeetCode 70爬楼梯71简化路径72编辑距离(dp)

    新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注这个潇洒青年一起飞,回 ...

  2. 力扣刷题记录-动态规划问题总结

    百度百科里对于动态规划问题是这样解释的: 在现实生活中,有一类活动的过程,由于它的特殊性,可将过程分成若干个互相联系的阶段,在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果.因此各个阶段 ...

  3. 力扣小练习(Java)

    目录 797.回溯,dfs 进制转换 232栈,队列 41 13dfs 7递归 343,dp 3,滑动窗口 76,最小覆盖字串<滑动窗口> 239,滑动窗口最大值 59,螺旋矩阵Ⅱ 螺旋矩 ...

  4. LeetCode 72. 编辑距离(DP)

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

  5. 力扣编辑距离系列问题总结

    1,两个字符串对比,其中一个字符串可跳过某个字符继续向下查找(累计上一个状态) 392.判断子序列 :给定字符串 s 和 t ,判断 s 是否为 t (源字符串)的子序列. 字符串的一个子序列是原始字 ...

  6. 20220219:力扣第72场双周赛题解

    力扣第72场双周赛 题目 思路与算法 代码实现 写在最后 题目 统计数组中相等且可以被整除的数对 找到和为给定整数的三个连续整数 拆分成最多数目的偶整数之和 统计数组中好三元组数目 思路与算法 前三题 ...

  7. 第一次LeetCode周赛心得(力扣-cn周赛,使用python3)

    第一次力扣参赛:第 174 场力扣周赛 第 174 场力扣周赛赛题: https://leetcode-cn.com/circle/discuss/lEfEkb/view/OrAJAh/ 第 174 ...

  8. 力扣-718最长重复子数组(dp)

    力扣-718最长重复子数组 1.题目 给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 .长度最长的子数组的长度 . 示例 1: 输入:nums1 = [1,2,3,2,1], ...

  9. 第 256 场力扣周赛(状态压缩+dp,二进制子序列的动规、940)

    第 256 场力扣周赛 有事没做,来看一下题 5854. 学生分数的最小差值 题目描述 给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数.另给你一个整 ...

最新文章

  1. 皮一皮:这样的领导还有吗
  2. 《大型门户网站是这样炼成的!(Struts 2+Spring 2+Hibernate 3) 》
  3. win10如何关闭Windows Defender安全保护程序
  4. win10下装win7双系统_双系统win10+win7,双硬盘互相引导
  5. 计算机系统大作业:Hello's P2P
  6. Hibernate一对多双向关联
  7. 中国未来家庭STEAM教育趋势研究报告
  8. OPPO R15刷root获取magisk权限 一键root R15系列
  9. 长沙动环监控系统主要监测哪些指标呢?
  10. 矩阵求导公式(引自维基百科)
  11. MMAction2学习笔记 使用C3D训练测试自己的数据集
  12. 互链独家 | 决战区块链金融战场 中国金融机构行动图谱
  13. [Odoo] Odoo 上传附件 attachment
  14. 『phphot』【SD2.0大会】刘振飞:微软Office研发成功三大法宝
  15. Android(四十二):Drawable 转 Bitmap
  16. Java学习之路--计算圆形的面积和周长
  17. 小米推送点击无效的原因
  18. c语言oj竞选投票,Just oj 2018 C语言程序设计竞赛(高级组)H: CBT?
  19. w7设置双显示器_Win7系统如何设置两个显示器即多屏幕模式
  20. 分享10个站内优化技巧 - 孔宇SEO

热门文章

  1. 模拟(婚礼上的小杉vijos1389)
  2. Matlab创建向量自回归(VAR)模型分析消费者价格指数 (CPI) 和失业率时间序列
  3. 从谭浩强《C程序设计》上摘录的ASCII码表(常用字符与ASCII代码对照表)
  4. 支付宝微信推出高速收费新服务器,高速收费迎来巨变,微信支付宝同时开启“无感支付”...
  5. 阿里云虚拟主机使用教程
  6. 07|声学回声消除AEC(1)
  7. 开源分享-桌面版坦克大战
  8. 脸谱里黑色 红色 白色各代表什么
  9. 【虹科技术】OPC UA技术,实现设备控制与互连未来
  10. 论文分享-->Independently Recurrent Neural Network (IndRNN): Building A Longer and Deeper RNN