代码随想录Day59 | 583. 两个字符串的删除操作 72. 编辑距离

win10自动修复-无限循环【通用完美】超简单解决办法 2020.02.14今个我的笔记本电脑(Thinkpad Carbon 7 X1)(win10)早晨起来发现蓝屏,上面显示自动修复失败,重启后依然自动修复失败,不断手动重启,始终是修复失败。然后上网开始搜集资料找解决办法。 前边介绍关闭自动修复,如何找出错文件的方法;如果想看最终解决办法,直接看第三部分 上网就会发现这种现象很常见,同时是电脑自动安装系统更新,或者安装某些驱动出现。解决办法也大... 阅读详情

代码随想录Day59 | 583. 两个字符串的删除操作 72. 编辑距离

583.两个字符串的删除操作

文档讲解:代码随想录
视频讲解: LeetCode:583.两个字符串的删除操作
状态

  1. dp数组
    dp[i][j] 表示 word1中的子串word1[0]到word1[i-1] 和 word2中的子串word2[0]到word2[j-1]相同时所需要的删除最少步数
  2. 递推公式
    当 word1[i-1] == word2[j-1] 时 那么就说明该元素可以不用删除,dp[i][j]的结果就和dp[i-1][j-1]的结果相同
    当不相等时,可能是删除word1[i-1],可能是删除word2[j-1],也可能两个都删除。
    删除word1[i-1] dp[i][j] = dp[i-1][j]+1
    删除word2[j-1] dp[i][j] = dp[i][j-1]+1
    两个都删除 dp[i][j] = dp[i-1][j-1]+2
    然后取三者的最小值
  3. 初始化
    当word1或者word2为空字符串时进行初始化
  4. 遍历顺序
    从前向后
  5. 打印dp
//dp[i][j]表示s中0-i-1 与 t中0-j-1 进行删除操作后相同的最少步骤
//当s[i-1] == t[j-1] dp[i][j] = dp[i-1][j-1]
//当不相等时 就要考虑删除i-1 dp[i-1][j] 删除j-1 dp[i][j-1]的最小值+1
//以及同时删除i-1 和 j-1 dp[i-1][j-1]+2
//而 dp[i-1][j]+1 = dp[i-1][j-1]+2  相当于先删除i-1 然后在基础上再删除j-1
class Solution {
public:
    int minDistance(string word1, string word2) {
        vector<vector<int>> dp(word1.size()+1,vector<int>(word2.size()+1));
        //初始化 当 s或者t的字符串长度为0时
        for(int i = 0;i<word1.size()+1;i++)
        {
            dp[i][0] = i;
        }
        for(int i = 0;i<word2.size()+1;i++)
        {
            dp[0][i] = i;
        }

        for(int i = 1;i<word1.size()+1;i++)
        {
            for(int j = 1;j<word2.size()+1;j++)
            {
                if(word1[i-1] == word2[j-1])
                {
                    dp[i][j] = dp[i-1][j-1];
                }
                else
                {
                    dp[i][j] = min(dp[i][j-1],dp[i-1][j])+1;
                }
            }
        }

        return dp[word1.size()][word2.size()];
    }
};

72.编辑距离

文档讲解:代码随想录
视频讲解: 动态规划终极绝杀! LeetCode:72.编辑距离
状态

本题和上一题差不多,只是现在只能在一个字符穿上进行修改,我们考虑在字符串上的添加操作,比如在word1上添加一个word2的字符使得两个字符串相等,其实就是从word2上删除掉该字符就可以了,所以可以转换为上面一道题

  1. dp数组
    dp[i][j] 表示 word1中的子串word1[0]到word1[i-1] 转换 word2中的子串word2[0]到word2[j-1],所需要的最少步数
  2. 递推公式
    当word1[i-1] == word2[j-1] 那么说明不需要任何操作 dp[i][j] = dp[i-1][j-1]
    当不相等时,有三种操作方式
    添加 相当于删除word2的j-1 dp[i][j] = dp[i][j-1]+1
    删除 删除word1的i-1 dp[i][j] = dp[i-1][j]+1
    替换 相当于将word1的i-1 替换为 word2的j-1 dp[i][j] = dp[i-1][j-1]+1
    取三者最小值
  3. 初始化
    当word1或者word2为空字符串时进行初始化
  4. 遍历顺序
    从前向后
  5. 打印dp
//dp[i][j] 表示 s子串0-i-1 转换为 t子串0-j-1的最少操作数
//如果s[i-1] == t[j-1] 那么dp[i][j] = dp[i-1][j-1]
//如果不相等 就需要涉及到
//插入 在s的i-1位置插入t[j-1] dp[i][j-1]
//删除 删除s的i-1位置  dp[i-1][j]+1
//替换 直接替换s[i-1]为t[j-1] dp[i-1][j-1]+1
class Solution {
public:
    int minDistance(string word1, string word2) {
        vector<vector<int>> dp(word1.size()+1,vector<int>(word2.size()+1));
        for(int i = 0;i<word1.size()+1;i++)
        {
            dp[i][0] = i;
        }
        for(int i = 0;i<word2.size()+1;i++)
        {
            dp[0][i] = i;
        }

        for(int i = 1;i<word1.size()+1;i++)
        {
            for(int j = 1;j<word2.size()+1;j++)
            {
                if(word1[i-1] == word2[j-1])
                {
                    dp[i][j] = dp[i-1][j-1];
                }
                else
                {
                    dp[i][j] = min(dp[i-1][j-1],min(dp[i][j-1],dp[i-1][j]))+1;
                }
            }
        }

        return dp[word1.size()][word2.size()];
    }
};

文档讲解:代码随想录
视频讲解:
状态

GEE:变异系数法在遥感影像分析中的应用及权重计算 本文介绍了在Google Earth Engine(GEE)平台上基于变异系数法的多指标加权遥感影像分析方法。该方法通过计算每个指标的平均值和标准差,进而计算变异系数来评估指标的变化程度。利用变异系数,我们可以计算每个指标的权重,并将其应用于加权和指数的计算,从而提高遥感影像分析的准确性和可靠性。方法应用于计算Risk-Screening Environmental Indicators (RSEI),并以此为例。 阅读详情

相关推荐

告别轮询!手把手教你用S32K3的FlexCAN Enhanced FIFO+DMA实现高效CAN FD数据接收

本文详细介绍了如何利用S32K3芯片的FlexCAN Enhanced FIFO与DMA组合方案,实现高效CAN FD数据接收,彻底告别传统轮询和中断模式。通过深度缓冲、智能过滤和DMA联动技术,该方案在5Mbps高负载场景下将CPU占用率从42%降至3%以下,显著提升系统实时性和吞吐量。

weixin_30906185的博客 502

【Day59】代码随想录之动态规划_583两个字符串的删除操作_72编辑距离

当if(word1[i-1] == word2[j-1]) dp[i][j] = dp[i-1][j-1] + 1;相等两者子串长度的最大值在以i-2结尾和j-2结尾的基础上+1,不相等则取i-1和j-2与i-2和j-1最长子串的最大值。进而递推公式dp[i][j] = min(dp[i-1][j-1], min(dp[i-1][j], dp[i][j-1])) + 1;三个操作中的最小的步数。

weixin_46275441的博客 990

Fortran环境配置:VS2022+Intel oneAPI安装全流程指南

Fortran环境配置:VS2022+Intel oneAPI安装全流程指南

shuyisuisuinian的博客 2万+

代码随想录刷题笔记 Day 59 | 两个字符串的删除操作 No.583 | 编辑距离 No.72

同时观察到递推公式依赖的是左上角,也就是此时要初始化第一行和第一列:第一行的含义是 长度为 0 的字符串1和字符串2变为相同需要多少次,让一个有长度的单词变为长度为 0,那就只有一种删除操作了,需要的次数是单词的长度次;比如上图的情况,这里发现两个 a 是相同的,此时要想让这两个字符串相同,就需要绿色部分也相同,也就是要加上使得绿色部分相同的操作的次数,这个次数正是。那什么时候能保证两个单词都保留的最多呢?代表将 i - 1 长度的单词 1 和 j - 1 长度的单词 2 变为同一个单词需要的最少的步数。

kkq的博客 1004

MyBatis示例

MyBatis示例 基本示例 环境准备 jdk : 1.8.0 MyEclipse MySQL MyBatis-3.4.6.jar 新建JavaWeb Project 命名:mybatis 导入JAR包或添加POM.xml中添加依赖 MyBatis_config.xml &amp;amp;amp;amp;amp;lt;?xml version=&amp;amp;amp;amp;quot;1.0&amp;amp;amp;amp;quot; encoding=&a

走在命运的左岸 720

安装了anaconda,pycharm导入numpy时提示没有该包(模块)?

**问题详情:**我安装了anaconda,在利用Pycharm学习numpy这个库的时候,导入numpy这个包的时候提示我没有nummpy这个模块:No module named numpy.如下图所示。 应该说安装了Anaconda,里边就自带了numpy这个库,就应该能够使用。我一个新手怎么搞得懂呢?于是网上查了查找到了一个解决办法,说是我项目的解释器应该设置为Anaconda安装目录下的python.exe,而不应该是系统自带的:https://blog.csdn.net/aanndd77/art

qq_39820505的博客 1万+

代码随想录算法训练营day59 || 583. 两个字符串的删除操作,72. 编辑距离

所以不管是dp[i-1][j],dp[i][j-1],dp[i-1][j-1]都是属于对s或者t进行了一次编辑。本题dp[i-1][j],dp[i][j-1]都是删除操作,dp[i-1][j-1]与dp[i][j]而言是替换操作;因为这个替换体现在dp[i][j]会得到dp[i-1][j-1]+1,即我默认通过替换一个元素使得s[i]与t[j]相等了,那么自然转移到的前一状态就是dp[i-1][j-1]。所以在字符题,用动态规划求解的话,发生转移的条件就是判断s[i]与t[j]的相等或不相等。

旭 529

Unreal5从入门到精通 专栏目录

欢迎来到“UE5从入门到精通”专栏!在这里,我们将带您踏上一段精彩的旅程,深入探索虚幻引擎5(Unreal Engine 5)的无限可能。不论您是游戏开发的新手,还是希望提升技能的开发者,这里都有适合您的内容。基础知识:了解虚幻引擎5的界面、功能和基本操作,为您的学习打下坚实的基础。项目实战:通过实际项目案例,帮助您从理论走向实践,真实体验游戏开发的每个环节。高级技巧:分享各种高级功能和技巧,包括蓝图、C++编程、材质编辑、光照和渲染等,让您能够创作出更具专业水准的作品。

TxNet 2987

代码随想录算法训练营day59 | 115.不同的子序列、583. 两个字符串的删除操作、72. 编辑距离

dp[i][j]:以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j]

sunflowers11的博客 881

57、振荡扫描仪的挠性枢轴:原理、设计与材料选择

本文深入探讨了振荡扫描仪中挠性枢轴的工作原理、设计方法与材料选择。挠性枢轴因其无润滑、高精度、低周期性误差和潜在无限寿命等优势,广泛应用于光学、太空、医学和半导体等领域。文章分析了其在小角度下的优异性能与无法连续旋转等局限性,提供了关键设计公式,并对比了多种挠性材料的性能指标。同时,结合不同应用场景提出设计优化策略,并展望了微型化、智能化和高性能材料等未来发展趋势,为工程实践提供了系统的设计流程与选型建议。

numpy6sculptor的博客 95

webrtc进阶-- FlexFEC 实现原理与调试分析(m80 代码对齐版)

WebRTC 中 FlexFEC 技术解析与调试指南 摘要:本文深入分析 WebRTC 的 FlexFEC(灵活前向纠错)技术实现原理,重点探讨其在 m80 版本中的协商机制、接收侧恢复流程以及 SFU 场景下的特殊处理。文章指出 FlexFEC 通过动态冗余策略提升弱网抗丢包能力,详细解析了编解码器分配、SSRC 映射、包恢复等关键环节,并提供了针对 XR+SFU 场景的调试建议。调试时可重点关注 FEC 包接收与媒体包恢复日志,以验证链路有效性。

HOSTEN的博客 48

代码随想录算法训练营Day59|LeetCode583两个字符串的删除操作、LeetCode72编辑距离

LeetCode583两个字符串的删除操作。LeetCode72编辑距离。动态规划part16。

m0_66412823的博客 292

基于自适应小波阈值算法的图像去噪

自适应小波阈值算法是一种基于小波变换的方法,它相对于传统的小波阈值去噪方法具有更好的性能和鲁棒性。该算法首先对图像进行小波变换,然后根据小波系数的大小确定一个自适应的阈值,将小波系数与阈值进行比较,大于阈值的系数被保留,小于阈值的系数被置零。在上述代码中,首先选取了小波函数sym4进行小波分解,然后根据标准差计算出阈值,使用wthresh函数进行阈值处理,最后进行反变换得到处理后的图像。该GUI界面与前面的自适应小波阈值算法代码结合,实现了图像的去噪,并提供了可视化的效果。

与其临渊羡鱼,不如退而结网 558

【Day59】代码随想录之动态规划part16——两个字符串的删除操作、编辑距离、编辑距离总结

编辑距离系列问题,我们大致做了四类题目。解决此类问题的动规五部曲为:以i-1为结尾的word1子序列和以j-1为结尾的word2子序列,最少的操作数使两者相同;两个元素相等:******两元素不相等:***********根据递推公式,需要把第一行和第一列全部初始化掉;从左到右,从上到下;5、打印dp数组。

格子格鸽的个人博客 944

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

day59 动态规划part16(583. 两个字符串的删除操作72. 编辑距离)

中等给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。每步 可以删除任意一个字符串中的一个字符。示例 1:输入: word1 = “sea”, word2 = “eat”输出: 2解释: 第一步将 “sea” 变为 “ea” ,第二步将 "eat "变为 “ea”示例 2:输入:word1 = “leetcode”, word2 = “etco”输出:4。

weixin_43889767的博客 734

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

随想录Day59 | 编辑距离 115.不同的子序列 583. 两个字符串的删除操作 72. 编辑距离

不同子序列: 是否选取最后一个元素删除操作:最后删除哪个词的最后一个元素编辑距离:三种操作的哪种来解决最后一个元素不匹配的情况。

weixin_44645059的博客 534

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

DAY59:动态规划(编辑距离)583、72

代码随想录主要写了如下题型判断子序列不同的子序列字符串的删除操作编辑距离公式的含义逐渐变的抽象,在编辑距离的时候,并不需要真正的操作,只需要计算步数就可以了。

weixin_43799497的博客 968

day59|583. 两个字符串的删除操作 ● 72. 编辑距离 ● 编辑距离总结篇

动态规划

qerwtrt4t的博客 402

算法训练营 day59 动态规划 两个字符串的删除操作 编辑距离

给定两个单词word1和word2,返回使得word1和word2所需的。可以删除任意一个字符串中的一个字符。​ 这次是两个字符串可以相互删了,这种题目也知道用动态规划的思路来解,动规五部曲,分析如下:确定dp数组(dp table)以及下标的含义dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结尾的字符串word2,想要达到相等,所需要删除元素的最少次数。这里dp数组的定义有点点绕,大家要撸清思路。确定递推公式当相同的时候当不相同的时候当相同的时候,;当。

qq_54343969的博客 424

代码随想录算法训练营29期|day59 任务以及具体安排

本周我们讲了动态规划之终极绝杀:编辑距离,为什么叫做终极绝杀呢?细心的录友应该知道,我们在前三篇动态规划的文章就一直为 编辑距离 这道题目做铺垫。心思的录友应该会发现我用了三道题做铺垫,才最后引出了动态规划:72.编辑距离 (opens new window),Carl的良苦用心呀,你们体会到了嘛!

m0_68520551的博客 1317

Day 59 | 动态规划 583. 两个字符串的删除操作、 72. 编辑距离、编辑距离总结篇

文章讲解。

m0_46554918的博客 233

代码随想录Day59

代码随想录Day59,继续学习动规解决子序列问题。从编辑距离这道题上看出了动规一直以来通过巧妙的dp数组含义规避了大部分的细分模拟情况。

qq_57596472的博客 448

day59 ● 583. 两个字符串的删除操作 ● 72. 编辑距离

583. 两个字符串的删除操作。

m0_58298553的博客 215

训练营打卡Day59

训练营打卡Day59

hhk166的专栏 153

代码随想录算法训练营29期Day59|LeetCode 583,72

动态规划

tlingyuqi的博客 548

@ 代码随想录算法训练营第8周(C语言)|Day59(动态规划)

dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结尾的字符串word2,想要达到相等,所需要删除元素的最少次数。这是只有删除操作的时候。包含插入替换操作之后的编辑距离问题。

fu1034810010的博客 329
上一篇: 代码随想录Day58 | 392.判断子序列 115.不同的子序列
下一篇: 代码随想录Day60 | 647. 回文子串 516.最长回文子序列
sRiddle
博客等级 码龄7年 528粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值