当前位置: 首页 > news >正文

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’)

思路

可以从后往前思考,从最后一步开始倒推,发现可以被进一步分解为相同的子问题,故用动态规划,最直观就用二维dp。
画动态规划表,假设word1的状态作为纵轴j,word2的状态为横轴i,
那么当前状态dp[j][i]可以分为两种情况:

  • 当前状态对应的word1和word2序列字符相同:
    那么无需增加操作步骤,可以进一步求dp[j-1][i-1]的状态
  • 当前状态下序列字符不同:
    此时因为有三种操作,故分为三种情况,取操作步骤最小的:
  1. 进行增加字符操作:
    操作步骤+1,问题变为求dp[j][i-1]状态
  2. 进行删除字符操作:
    操作步骤+1,问题变为求dp[j-1][i]状态
  3. 进行修改字符操作:
    操作步骤+1,问题变为求dp[j-1][i-1]状态
“”word2
“”
w
o
rdp[j][i]
d
1res

注意,因为添加了空字符的情况,表格的坐标和字符串的序列不再相同,在判断word1和word2字符的时候要转换成序列
然后填充完状态转移表,最右下角的即为最小的结果

代码

class Solution{public: int minDistance(string word1, string word2){introw=word1.size()+1;intcol=word2.size()+1;vector<vector<int>>dp(row,vector<int>(col,0));dp[0][0]=0;for(inti=1;i<col;i++){dp[0][i]=dp[0][i-1]+1;}for(intj=1;j<row;j++){dp[j][0]=dp[j-1][0]+1;for(intk=1;k<col;k++){// 注意此处对比的是word1和word2对应序列的字符需要-1,而不是状态转移表中的值 if(word1[j-1]==word2[k-1]){dp[j][k]=dp[j-1][k-1];}else{dp[j][k]=min(min(dp[j-1][k],dp[j][k-1]),dp[j-1][k-1])+1;}}}returndp.back().back();}};

值得注意的是,在填的表格里包含了空字符的问题,在判断字符相等时,字符串的序列为对应的表格坐标-1再次注意

感谢 感谢华南溜达虎 力扣 力扣hot100

http://www.jsqmd.com/news/497885/

相关文章:

  • Vue.js如何通过WebUploader控件解决汽车制造CAD图纸的超大附件分片校验上传?
  • GitNexus:零服务器代码知识图谱引擎,让代码理解更智能
  • 重庆包装袋制作供应厂家排行
  • 飞腾平台 UEFI 与 U-Boot 启动方案对比及选型建议
  • 2-3层网络测试仪全面解析北京网测科技--Supernova 系列产品介绍与选型指南
  • [Win11 Vmware17 CentOS7.6]安装Linux操作系统详细步骤(附VMware17+CentOS7下载链接)
  • 干货!跨境电商出海短视频矩阵工具怎么选?
  • 如何解决帝国CMS 7.5编辑器粘贴Word文档时格式和图片丢失的问题?
  • python+Ai技术框架的健身房课程预约管理系统的设计与实现django flask
  • 深入理解 async/await:现代异步编程的终极解决方案
  • 医疗行业票据合规要求高?智能接口严守风控关
  • 吉林省GEO营销哪个服务商技术强
  • 【CANoe】使用IG发报文触发busOff后不能恢复教程
  • 探索六自由度并联 Stewart Platform 平台的奇妙之旅
  • 基于秃鹰搜索算法优化BP神经网络的多变量时间序列预测
  • 东华复试OJ二刷复盘11
  • 三相调速永磁同步电动机maxwell模型 1、案例采用180-8极一字型冲片 2、转速为150...
  • 别再浪费硬盘了!用MediaMTX打造自动录制+HLS点播系统,还能钩子转码!
  • EasyDSS视频流媒体WebRTC技术解析:智慧校园直播、点播与会议一体化融合实践
  • Agent 4大协议:MCP/ACP/A2A/ANP
  • 文字宽度 文字包围盒
  • 帝国CMS 7.5编辑器导入Word内容为何会丢失样式?如何修复?
  • 关于《信息系统项目管理师教程(第4版)》中“计划”概念的准确描述
  • Vue3 pinia Store 开发参考模板(部门 Store)
  • DDoS是什么?遇到后有哪些解决方法?
  • OpenClaw调教:从“能聊天”到“能干活”,我为什么建议先改这3个文件
  • 35岁转行AI大模型开发?零基础也能逆袭_三十五岁零基础转行成为AI大模型开发者怎么样呢?
  • 计算机毕业设计之springboot大学生志愿者管理系统
  • 西北AI搜索优化:亲测有效工具分享
  • 光伏运维未来趋势:智能运维系统成关键