【LeetCode75】第六十六题 编辑距离

news2024/12/29 12:54:34

目录

题目:

示例:

分析:

代码:


题目:

示例:

分析:

题目给我们三种操作方式,插入一个字符,删除一个字符,替换一个字符。

问我们最少操作几次可以把字符串1变成字符串2。

那么同样是两个字符串的动态规划,我们可以参考一下前两题最长公共子序列的dp数组。

dp[ i ][ j ]表示为当字符串1的长度为 i ,字符串2的长度为 j 时,所需的最小操作次数。

那么确定了dp数组的含义之后,我们需要找到递推公式。

首先如果字符串1的第 i 个字符等于字符串2的第 j 个字符,那么它们的最小操作次数就应该等于dp[ i - 1 ][ j - 1],也就是不用操作。

那么重点是如果字符不一样呢。

题目给了我们三种操作方法,我们应该怎么在代码里体现出来呢。

假设两个字符不一样,我用的是删除操作,那么就等于是让字符串1的长度少了一节,也就是说操作次数应该是dp[ i - 1 ][ j ] + 1 。

如果用的是插入操作,那么就等于是字符串1的长度多了一节,但是我们没法在dp数组里体现出来,那我们换一个思路,我对字符串1进行插入操作,是不是就等于是我跳过了比较字符串2的第 j 个字符。那么最小操作次数就是dp[ i ][ j - 1 ] + 1 。

最后就是替换操作,替换操作可以看成是先删除再插入,所以可以写成是dp[ i - 1][ j + 1 ] + 1 。

至此我们就找到了递归公式:

 最后就剩一个初始化,由于递推公式里需要对 i 和 j 进行 -1 的操作,所以 i 和 j 都至少需要1。

因此我们需要初始化 i=0 和 j = 0的情况。

这两种情况分别是字符串1的长度为0以及字符串2的长度为0的情况。

字符串1的长度为0时,最小操作次数就是字符串2的长度,因为只有对字符串1执行那么多次的插入操作才可以使得他们相同。字符串2的长度为0时也是一样的,只能对字符串1执行那么多次的删除操作。

最后返回dp数组的最后一个元素即可。

代码:

class Solution {
public:
    int minDistance(string word1, string word2) {
        int n=word1.size();int m=word2.size();
        vector<vector<int>>dp(n+1,vector<int>(m+1));
        for(int i=1;i<n+1;i++) dp[i][0]=i;
        for(int i=1;i<m+1;i++) dp[0][i]=i;
        for(int i=1;i<n+1;i++){
            for(int j=1;j<m+1;j++){
                if(word1[i-1]==word2[j-1]){ //字符相同则保持之前的最少操作数
                    dp[i][j]=dp[i-1][j-1];
                }else{//字符不同则操作
                    //dp[i-1][j]+1为插入操作 
                    //dp[i-1][j-1]+1为替换操作
                    //dp[i][j-1]+1为删除操作
                    //挑一个操作数最小的作为dp[i][j]
                    dp[i][j]=min({dp[i-1][j],dp[i-1][j-1],dp[i][j-1]})+1;
                }
            }
        }
        return dp[n][m];
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1066503.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图形学中一些基本知识的总结与复习

前言 在过完games101课程后仍然觉得自己还有许多地方不懂与遗漏&#xff0c;以此来补充与复习一些其中的知识。 参考&#xff1a;Games101、《Unity Shader 入门精要》 GPU渲染流水线(GPU Rendering Pipeline) ----注&#xff1a;Games101课程中所展示渲染流程与书中有所不同&…

前端作业(17)

之后的20个作业&#xff0c;学自【20个JavaScript经典案例-哔哩哔哩】 https://b23.tv/kVj1P5f 支付倒计时 1. 支付10s倒计时 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compat…

【UE】在游戏运行时,通过选择uasset来生成静态网格体

目录 主要流程 步骤 一、创建用于包含静态网格体的Actor蓝图 二、按钮点击事件 效果 主要流程 用户点击按钮后产生一个文件对话框&#xff0c;用户通过文件对话框选择指定的文件夹&#xff0c;我们获取到这个文件夹路径后处理成“按路径获取资产”节点所需的输入&#x…

AdaBoost(下):数据分析 | 数据挖掘 | 十大算法之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

录音编辑软件推荐,让你的音频制作更上一层楼!

“有没有好用的录音编辑软件推荐呀&#xff1f;就是可以用来剪辑录音的&#xff0c;领导要求我们对基层工作人员进行访谈&#xff0c;需要录音&#xff0c;可是录制的声音杂音很多&#xff0c;听不清在讲什么&#xff0c;求大家推荐一个录音编辑软件&#xff0c;谢谢啦&#xf…

更新SQLite数据库数据

本文所有代码均存放于 https://github.com/MADMAX110/Starbuzz 之前了解了如何修改应用让它从SQLite数据库中提取数据&#xff0c;但是还没有用过更新过数据库数据。 这里要修改应用使用户能够记录哪些饮料是他们的最爱。为此要为DrinkActivity增加一个复选框&#xff1b; 如果…

iPhone苹果手机闹钟智能跳过节假日怎么设置?

国内绝大多数的手机用户使用的操作系统只有三个&#xff0c;安卓、鸿蒙和苹果的ios。而iPhone苹果手机的忠实用户是非常多的&#xff0c;所以日积月累中用户数量也就非常庞大&#xff0c;并且相当一部分用户都是上班族。而工作忙碌的上班族因为事情比较多&#xff0c;为了避免自…

前端笔试题总结,带答案和解析(持续更新,上次更新23/10/5,目前有30题)

前端笔试题总结&#xff0c;带答案和解析&#xff08;持续更新&#xff0c;上次更新23/10/5&#xff0c;目前有30题&#xff09; 这个系列将持续更新前端笔试题一期十题&#xff0c;每五题做一个标题&#xff08;方便跳转&#xff09;&#xff0c;您可以一期一期阅读&#xff0…

SAP BAPI2017_GOODSMVT_CREATE 不支持 货物移动失败

SAP BAPI2017_GOODSMVT_CREATE 不支持 货物移动失败 可能的原因两种&#xff1a; 1.移动类型允许的事务代码不全 2.BAPI传值的移动类型有问题

Laya3.0 如何快速调试

点击play箭头 点击右边的开发者工具 就会弹出 chrome的调试窗口 然后定位到你自己的ts文件 直接在ts里断点即可 不需要js文件 如何自动生成代码&#xff1f; 比如你打开一个新项目 里面显示的是当前场景 只需要点击 UI运行时 右边的框就可以了 他会自动弹窗提示你 创建一个文…

百元内挂耳式耳机哪款好、百元挂耳式耳机推荐

开放式耳机采用挂耳式设计&#xff0c;佩戴不需要堵住耳道&#xff0c;这种创新的设计不仅可以享受音乐&#xff0c;还保留了外界环境的听觉感知能力&#xff0c;让我们在户外运动、通勤或进行其他活动时更加安全&#xff0c;预算不多&#xff0c;百元价位范围内&#xff0c;我…

Spring:处理@Autowired和@Value注解的BeanPostProcessor

AutowiredAnnotationBeanPostProcessor,它实现了MergedBeanDefinitionPostProcessor,因此会调用postProcessMergedBeanDefinition方法。 它实现了InstantiationAwareBeanPostProcessor,因此在属性注入时会调用postProcessPropertyValues方法 如果Autowired注解按类型找到了大…

微信如何防止被限制?一文了解原因和处理方法

微信引流频繁被限制加好友&#xff0c;是许多人在营销过程中遇到的一大难题。为了解决这一问题&#xff0c;我们需要先了解微信官方对好友添加的限制和政策。只有明确了这些规定&#xff0c;才能更有效地进行微信引流&#xff0c;提高营销效果。 为什么被限制&#xff1f; 为了…

为什么企业都在申报“高新技术”?有以下十大好处!

随着信息技术时代的迅速发展&#xff0c;很多企业为了能够在同行中脱颖而出&#xff0c;都会选择办理一些和企业相关的资质证书&#xff0c;以便提升企业的核心竞争力&#xff0c;今天同邦信息科技的小编就告诉大家为什么那么多企业都选择申报“高新技术”企业&#xff1f; 首先…

智慧用电安全云监控系统

近年来&#xff0c;我国电气火灾频发&#xff0c;2017年至2019年&#xff0c;我国共之间发生发展电气控制火灾31.1万起&#xff0c;占全国进行火灾总量及伤亡风险损失的30&#xff05;以上&#xff0c;2019年全年共接报火灾23.3万起&#xff0c;电气火灾11.1万&#xff0c;占52…

Doris 2.0.1 DockerFile版 升级实战

1、Doris 2.0.1 DockerFile 的制作 参考 Doris 2.0.1 Dockerfile制作-CSDN博客 2、之前的Doris 集群通过 Docker容器进行的部署&#xff0c;需提前准备好Doris2.0.1的镜像包 参考&#xff1a; 集群升级 - Apache Doris Doris 升级请遵守不要跨两个及以上关键节点版本升级的…

数字化转型频频失败?一体化模式提供新的思考

数字化连续6年出现在政府报告中&#xff0c;从《中小企业数字化赋能专项行动方案》到《关于推进“上云用数赋智”行动》、《“十四五” 规划和 2035 年远景目标建议》、《中小企业数字化转型指南》&#xff0c;再到2023年2月《数字中国建设整体布局规划》&#xff0c;加快数字化…

新基建智慧铁路:高铁沿线综合视频监控及风险智能预警管理方案

一 、方案背景 铁路沿线安全环境直接关系铁路运输安全畅通。随着我国铁路特别是高速铁路运营里程不断增加&#xff0c;改善铁路沿线安全环境对保障铁路高质量发展和人民群众生命财产安全的作用更加突出。为了保障高铁的安全运营&#xff0c;高铁对安防尤其是视频监控的需求不断…

【转载】vscode配置numpy环境,实测有效

1.首先找到python.exe文件的位置 查看python.exe文件在哪的方法&#xff1a; 1、在vscode中执行下面的程序即可直接输出python.exe文件的路径 import sys sys.executable 输出结果如下&#xff1a; 2、新建终端 然后输入下列进行跳转 cd C:\Users\胡萝卜超爱兔子\AppData\Lo…

【EI会议征稿】第三届公共管理与大数据分析国际学术会议 (PMBDA 2023)

第三届公共管理与大数据分析国际学术会议 &#xff08;PMBDA 2023&#xff09; 2023 3rd International Conference on Public Management and Big Data Analysis 第三届公共管理与大数据分析国际学术会议 &#xff08;PMBDA 2023&#xff09;将于2023年12月15-17日在中国南京…