【力扣72. 编辑距离】dp(Python3)
题目描述
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)相关推荐
- LeetCode 70爬楼梯71简化路径72编辑距离(dp)
新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注这个潇洒青年一起飞,回 ...
- 力扣刷题记录-动态规划问题总结
百度百科里对于动态规划问题是这样解释的: 在现实生活中,有一类活动的过程,由于它的特殊性,可将过程分成若干个互相联系的阶段,在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果.因此各个阶段 ...
- 力扣小练习(Java)
目录 797.回溯,dfs 进制转换 232栈,队列 41 13dfs 7递归 343,dp 3,滑动窗口 76,最小覆盖字串<滑动窗口> 239,滑动窗口最大值 59,螺旋矩阵Ⅱ 螺旋矩 ...
- LeetCode 72. 编辑距离(DP)
1. 题目 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 . 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示 ...
- 力扣编辑距离系列问题总结
1,两个字符串对比,其中一个字符串可跳过某个字符继续向下查找(累计上一个状态) 392.判断子序列 :给定字符串 s 和 t ,判断 s 是否为 t (源字符串)的子序列. 字符串的一个子序列是原始字 ...
- 20220219:力扣第72场双周赛题解
力扣第72场双周赛 题目 思路与算法 代码实现 写在最后 题目 统计数组中相等且可以被整除的数对 找到和为给定整数的三个连续整数 拆分成最多数目的偶整数之和 统计数组中好三元组数目 思路与算法 前三题 ...
- 第一次LeetCode周赛心得(力扣-cn周赛,使用python3)
第一次力扣参赛:第 174 场力扣周赛 第 174 场力扣周赛赛题: https://leetcode-cn.com/circle/discuss/lEfEkb/view/OrAJAh/ 第 174 ...
- 力扣-718最长重复子数组(dp)
力扣-718最长重复子数组 1.题目 给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 .长度最长的子数组的长度 . 示例 1: 输入:nums1 = [1,2,3,2,1], ...
- 第 256 场力扣周赛(状态压缩+dp,二进制子序列的动规、940)
第 256 场力扣周赛 有事没做,来看一下题 5854. 学生分数的最小差值 题目描述 给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数.另给你一个整 ...
最新文章
- 皮一皮:这样的领导还有吗
- 《大型门户网站是这样炼成的!(Struts 2+Spring 2+Hibernate 3) 》
- win10如何关闭Windows Defender安全保护程序
- win10下装win7双系统_双系统win10+win7,双硬盘互相引导
- 计算机系统大作业:Hello's P2P
- Hibernate一对多双向关联
- 中国未来家庭STEAM教育趋势研究报告
- OPPO R15刷root获取magisk权限 一键root R15系列
- 长沙动环监控系统主要监测哪些指标呢?
- 矩阵求导公式(引自维基百科)
- MMAction2学习笔记 使用C3D训练测试自己的数据集
- 互链独家 | 决战区块链金融战场 中国金融机构行动图谱
- [Odoo] Odoo 上传附件 attachment
- 『phphot』【SD2.0大会】刘振飞:微软Office研发成功三大法宝
- Android(四十二):Drawable 转 Bitmap
- Java学习之路--计算圆形的面积和周长
- 小米推送点击无效的原因
- c语言oj竞选投票,Just oj 2018 C语言程序设计竞赛(高级组)H: CBT?
- w7设置双显示器_Win7系统如何设置两个显示器即多屏幕模式
- 分享10个站内优化技巧 - 孔宇SEO
热门文章
- 模拟(婚礼上的小杉vijos1389)
- Matlab创建向量自回归(VAR)模型分析消费者价格指数 (CPI) 和失业率时间序列
- 从谭浩强《C程序设计》上摘录的ASCII码表(常用字符与ASCII代码对照表)
- 支付宝微信推出高速收费新服务器,高速收费迎来巨变,微信支付宝同时开启“无感支付”...
- 阿里云虚拟主机使用教程
- 07|声学回声消除AEC(1)
- 开源分享-桌面版坦克大战
- 脸谱里黑色 红色 白色各代表什么
- 【虹科技术】OPC UA技术,实现设备控制与互连未来
- 论文分享-->Independently Recurrent Neural Network (IndRNN): Building A Longer and Deeper RNN