代码随想录补打卡 583两个字符串的删除操作 72 编辑距离

news/2024/11/20 9:19:41/

583两个字符串的删除操作 

代码如下

func minDistance(word1 string, word2 string) int {   dp[i][j]的含义是下标为i-1和下标为j-1的两个数组的最小操作数

                  dp := make([][]int,len(word1)+1)

                  for i,_ := range dp {

                      dp[i] = make([]int,len(word2)+1)

                  }

                  for i := 0 ; i <= len(word1) ; i++ {         dp[i][0]的意思为如果一个数组长度为i,另一个为空,那么需要的操作数是i

                      dp[i][0] = i 

                  }

                  for j := 0 ; j <= len(word2) ; j++ {  同理

                      dp[0][j] = j 

                  }

                  for i := 1 ; i <= len(word1) ; i++ {

                      for j := 1 ; j <= len(word2) ; j++ {

                          if word1[i-1] == word2[j-1] {  如果这两个数相同,则不需要任何操作让他们相同

                              dp[i][j] = dp[i-1][j-1]

                          }else {  如果这两个数不同,则可能需要三种操作,一是删除数组1的元素,二是删除数组2的元素,3是删除数组1和2的元素 。因为这个数都是从前面推出来的,所以遍历到i-1和j-1时说明这两个数组经过dp[i-1][j-1]个操作数已经相同,那么就删除这两个元素即可,所以操作数加2 同理,可能两个数组经过dp[i][j-1]个操作数相同,那么就需要删除j-1这个数,所以操作数加1 

                              dp[i][j] = min(dp[i-1][j]+1,min(dp[i][j-1]+1,dp[i-1][j-1]+2))

                          }

                      }

                  }

                  return dp[len(word1)][len(word2)]

}

func min(a,b int) int {

    if a < b {

        return a

    }else {

        return b 

    }

}

72 编辑距离 

代码如下 

func minDistance(word1 string, word2 string) int {

                 dp := make([][]int,len(word1)+1)

                 for i,_ := range dp {

                     dp[i] = make([]int,len(word2)+1)

                 }

                 for i := 0 ; i <= len(word1) ; i++ {

                     dp[i][0] = i 

                 }

                 for j := 0 ; j <= len(word2) ; j++ {

                     dp[0][j] = j

                 }

                 for i := 1 ; i <= len(word1) ; i++ {

                     for j := 1 ; j <= len(word2) ; j++ {

                         if word1[i-1] == word2[j-1] {

                             dp[i][j] = dp[i-1][j-1]

                         }else {    和上面一题基本差不多,就是当两个数不相同时,可以有三个操作,删除,增加或者替换,删除和添加互为逆运算所以操作数相同,而替换,则说明在没有比较这两个数之前进行dp[i-1][j-1]个操作可以使得两个数组相同,那么就只要进行一次替换操作即可。而删除操作则是,删除一个数组里的元素即可,为什么不需要同时删除两个元素,因为如果需要删除两个元素,那么其实可以进行替换操作 

                             dp[i][j] = min(dp[i-1][j]+1,min(dp[i][j-1]+1,dp[i-1][j-1]+1))

                         }

                     }

                 }

                 return dp[len(word1)][len(word2)]

}

func min(a,b int) int {

    if a < b {

        return a 

    }else {

        return b 

    }

}


http://www.ppmy.cn/news/103546.html

相关文章

0day工具集(资源)介绍-0day漏洞利用原理(2)

往期文章: 漏洞概述-0day漏洞利用原理(0)_luozhonghua2000的博客-CSDN博客 二进制概述-0day漏洞利用原理(1)_luozhonghua2000的博客-CSDN博客 上篇已介绍了Lord PE这篇集中必要的工具。 OllyDbg 推荐:OllyDBG完美教程(超强入门级)_「已注销」的博客-CSDN博客 OD使用教…

【满分】【华为OD机试真题2023B卷 JAVAJS】数据分类

华为OD2023(B卷)机试题库全覆盖,刷题指南点这里 数据分类 知识点位运算 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 对一个数据a进行分类,分类方法为:此数据a(四个字节大小)的四个字节相加对一个给定的值b取模,如果得到的结果小于一个给定的值c,则数据…

Spring常见面试题

参考:javaguide、程序员大彬 1.什么是Spring? Spring是个轻量级的框架,通过IOC达到松耦合的目的,通过AOP可以分离应用业务逻辑和系统服务分开,不过配置各种组件时比较繁琐,所以后面才出选了SpringBoot的框架。 2.Spring用了哪些设计模式 BeanFactory用了工厂模式,AO…

AcrelEMS企业微电网能效管理系统-强化电力需求侧管理,缓解电力系统峰值压力

摘要 近年来全国用电负荷特别是居民用电负荷的快速增长&#xff0c;全国范围内夏季、冬季用电负荷“双峰”特征日益突出&#xff0c;极端气候现象多发增加了电力安全供应的压力。具有随机性、波动性、间歇性特征的可再生能源大规模接入电网对电力系统的稳定性带来新的挑战&…

OpenCV实战——根据立体图像计算深度信息

OpenCV实战——根据立体图像计算深度信息 0. 前言1. 立体视觉系统2. 计算深度信息3. 完整代码相关链接0. 前言 人类可以用两只眼睛构建三个维度世界,而为机器人配备两个摄像头时,机器人同样也可以做到这一点,这称为立体视觉 (stereo vision)。安装在设备上的一对摄像机可以…

破解极域(4):万能密码法(可以获取到原密码)

破解极域&#xff08;4&#xff09;&#xff1a;万能密码法 1.思路2.实现2.1 获得密码2.2 解除控制2.3 特别注意 3.视频展示 今天来分享下破解极域的第4种方法——万能密码法 1.思路 首先&#xff0c;我们要知道的是&#xff0c;极域这个东西它有一个万能密码&#xff0c;万能…

Java日期时间调整的几种方式

一、Calendar类 我们现在已经能够格式化并创建一个日期对象了&#xff0c;但是我们如何才能设置和获取日期数据的特定部分呢&#xff0c;比如说小时&#xff0c;日&#xff0c;或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案是使用Calendar 类。 Calendar类的…

消除字母-第14届蓝桥杯省赛Scratch中级组真题第6题

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第141讲。 消除字母&#xff0c;本题是2023年5月7日举行的第14届蓝桥杯省赛Scratch图形化编程中级组真题第6题&#xf…