代码随想录算法训练营|五十五天

news2024/11/28 6:52:02

两个字符串的删除操作

583. 两个字符串的删除操作 - 力扣(LeetCode)

因为两个字符串都能删除,所以字符不匹配的话就有三个方向取最小值赋值给dp[i,j],不过这里dp[i-1,j-1]+2=dp[i,j-1]+1,从字面上理解 就是 当 同时删word1[i - 1]和word2[j - 1],dp[i][j-1] 本来就不考虑 word2[j - 1]了,那么我在删 word1[i - 1],是不是就达到两个元素都删除的效果,即 dp[i][j-1] + 1。(抄的,还是没搞懂,只能不省略三个方向一起写)

初始化,设某个字符串是空的,另一个字符串有多长就得删除多少次。

public class Solution {
    public int MinDistance(string word1, string word2) {
        int[,] dp = new int[word1.Length+1,word2.Length+1];
        for(int i=0;i<=word1.Length;i++)dp[i,0] = i;
        for(int j=0;j<=word2.Length;j++)dp[0,j] = j;

        for(int i=1;i<=word1.Length;i++){
            for(int j=1;j<=word2.Length;j++){
                if(word1[i-1] == word2[j-1]){
                    dp[i,j] = dp[i-1,j-1];
                }else{
                    dp[i,j] = Math.Min(dp[i-1,j-1]+2,Math.Min(dp[i,j-1]+1,dp[i-1,j]+1));
                }
            }
        }
        return dp[word1.Length,word2.Length];
    }
}

 编辑距离

72. 编辑距离 - 力扣(LeetCode)

递推公式,和上一题差不多,多了增、改,但增其实也是删,如果增的是word1,那删的是word2,例如word1:abc,word2:abcd。word1增加d的操作数和word2删除d的操作数是一样的。改的话,就是多加一步才得到目标字符。所以,当字符不同时,总共有三个方向,dp[i,j] = Math.Min(dp[i-1,j-1]+1,Math.Min(dp[i,j-1],dp[i-1,j])+1);

public class Solution {
    public int MinDistance(string word1, string word2) {
        int[,] dp = new int[word1.Length+1,word2.Length+1];
        for(int i=0;i<=word1.Length;i++)dp[i,0] = i;
        for(int j=0;j<=word2.Length;j++)dp[0,j] = j;

        for(int i=1;i<=word1.Length;i++){
            for(int j=1;j<=word2.Length;j++){
                if(word1[i-1] == word2[j-1]){
                    dp[i,j] = dp[i-1,j-1];
                }else{
                    dp[i,j] = Math.Min(dp[i-1,j-1]+1,Math.Min(dp[i,j-1],dp[i-1,j])+1);
                }
            }
        }
        return dp[word1.Length,word2.Length];
    }
}

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

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

相关文章

mfc140u.dll丢失的解决方法,以及mfc140u.dll解决方法的优缺点

在使用电脑过程中&#xff0c;有时会遇到一些与动态链接库文件&#xff08;DLL&#xff09;相关的错误。其中&#xff0c;mfc140u.dll丢失的错误是较为常见的一种。当这个关键的mfc140u.dll文件丢失或损坏时&#xff0c;可能会导致某些应用程序无法正常运行。在本文中&#xff…

怎样班群发成绩?

身为老师&#xff0c;定期发布学生成绩是项重要任务。在过去&#xff0c;这项任务需要手动操作&#xff0c;工作量大而且总是发错。不过诶&#xff0c;现在我们可以通过各种方式实现学生自助查询成绩&#xff0c;既提高了效率又不会发错&#xff01; 就是需要制作一个查询系统。…

日本水稻(Oryza sativa Japonica rice)的基因组染色质长度 IRGSP-1.0

创作日志&#xff1a; 在看scHi-C综述的时候发现了一个在2021年发布在Nature Plants上的数据集&#xff0c;想拿来用&#xff0c;首先就要知道其对应的水稻品种以及染色质长度。最终在UCSC上找到了对应的组装好的基因组&#xff0c;版本名为 IRGSP-1.0。 UCSC链接&#xff1a;h…

Apipost 推出IDEA插件一键生成API文档

今天给大家推荐一款IDEA插件&#xff1a;Apipost-Helper-2.0&#xff0c;写完代码IDEA内一键生成API文档&#xff0c;无需安装、打开任何其他软件&#xff1b;写完代码IDEA内一键调试&#xff0c;无需安装、打开任何其他软件&#xff1b;生成API目录树&#xff0c;双击即可快速…

SpringCloud Alibaba组件入门全方面汇总(中):服务熔断降级-Sentinel

文章目录 Sentinel常见的容错思路Sentinel流量控制规则sentinel 自定义异常 sentinelresources 注解使用Feign整合Sentinel**面试题&#xff1a;结合Feign后&#xff0c;你在项目中的降级方法中会实现什么样的操作/功能&#xff1f;** Sentinel Sentinel是阿里巴巴开源的分布…

SAP PI/PO中使用UDF解决按字节拆分字符串的需求

需求背景&#xff1a; SAP需要将采购订单信息通过PI发送到SFTP服务器上&#xff0c;生成文件&#xff0c;一般对日项目上文件内容通常都是按照指定的字节数拆分的&#xff0c;而不是字符数&#xff0c;类似下面的格式。 问题点&#xff1a; 如果是使用FTP适配器&#xff0c;则…

VBA技术资料MF83:将Word文档批量另存为PDF文件

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到…

c/c++语言算法技巧汇总大复习2

标题前面打*号的为多数考纲范围外的&#xff0c;可以选择性查看 &#x1f517;链接&#xff1a;严书代码大全 &#x1f517;链接&#xff1a;c/c语言算法技巧汇总大复习1 &#x1f517;链接&#xff1a;c/c语言算法技巧汇总大复习2 目录 Dp动态规划入门练习 青蛙跳台阶练习&…

印染污水处理设备的物理法分类有哪些设备?

印染污水处理设备的物理法分类主要有以下几种设备&#xff1a; 筛滤截留法&#xff1a;主要采用筛网、格栅、滤池与微滤机等设备&#xff0c;用于去除污水中的悬浮物和漂浮物。重力分离法&#xff1a;主要采用沉砂池、沉淀池、隔油池与气浮机等设备&#xff0c;利用重力或浮力…

牛客 —— 链表中倒数第k个结点(C语言,快慢指针,配图)

目录 1. 思路1&#xff1a;倒数第K个节点&#xff0c;就是整数第N-K1的节点 2. 思路2&#xff1a;快慢指针 1. 思路1&#xff1a;倒数第K个节点&#xff0c;就是整数第N-K1的节点 链表中&#xff0c;一共有N个节点&#xff0c;如果我们想要得出倒数第K个节点&#xff0c;我们…

【SpringBoot篇】分页查询 | 扩展SpringMvc的消息转换器

文章目录 &#x1f6f8;什么是分页查询&#x1f339;代码实现⭐问题&#x1f384;解决方法 做了几个项目&#xff0c;发现在这几个项目里面&#xff0c;都实现了分页查询效果&#xff0c;所以就总结一下&#xff0c;方便学习 我们基于黑马程序员的苍穹外卖来讲解分页查询的要点…

深度学习之基于YoloV5安检仪危险品识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 深度学习之基于 YOLOv5 安检仪危险品识别系统介绍YOLOv5 简介安检仪危险品识别系统系统架构应用场景 二、功能三、系统四. 总结 一项目简介 深度学习之基于…

ESP32 Arduino实战基础篇-使用中断和定时器

本教程介绍如何使用 PIR 运动传感器通过 ESP32 检测运动。在此示例中,当检测到运动(触发中断)时,ESP32 会启动计时器并打开 LED 并持续预定义的秒数。当计时器倒计时结束时,LED 自动关闭。 通过这个例子,我们还将探讨两个重要的概念:中断和定时器。 中断介绍 要使用 P…

照亮夜晚的台灯:户外空间的闪亮之选

户外台灯是家庭和社交空间的重要元素&#xff0c;它们不仅提供照明&#xff0c;还可以为您的户外区域增添美感&#xff0c;以及创造一个温馨的社交氛围。以下是一些关于户外台灯的信息&#xff0c;以帮助您更好地了解它们的多功能性和用途。 1、照明的重要性&#xff1a;户外台…

蒸汽流量计量表

数字化场景&#xff1a;蒸汽监测 定义 监测蒸汽流量 单位是 立方米 很难计算 等效碳排 不是按楼&#xff0c;也不是按层&#xff0c;比如宁波某园区&#xff0c;就6个蒸汽流量表 看懂蒸汽表&#xff0c;了解蒸发焓或潜热(hfg) 由于水是从0C加热到饱和温度的&#xff0c;它…

Linux 安装多版本 JDK 详细过程

背景说明 服务器已安装jdk1.8,但随着spring全家桶的升级换代&#xff0c;已不满足使用&#xff0c;先要用高版本jdk&#xff0c;暂时不想卸载旧的版本&#xff0c;故安装两个版本&#xff0c;jdk1.8和jdk17,jdk1.8的已经安装过了&#xff0c;所以此次只安装jdk17,以及配置jdk切…

【Linux系统编程十八】:(基础IO5)--动静态库共享/动静态加载问题(涉及地址空间)

【Linux系统编程十八】&#xff1a;动静态库共享/动静态加载问题(涉及地址空间&#xff09; 一.可执行程序如何被加载的1.加载之前2.加载之后①如何执行第一条命令②缺页中断/与地址空间建立联系 二.动态库如何加载的三.动态库如何实现多进程间共享的 一.可执行程序如何被加载的…

IDEA插件推荐:Apipost-Helper

IDEA是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它可以帮助开发人员更加高效地编写、调试和部署软件应用程序。我们在编写完接口代码后需要进行接口调试等操作&#xff0c;一般需要打开额外的调试工具。 今天给大家介绍一款IDEA插件&#xff1a;Api…

ATE测试工程师的薪资前景如何?能转DFT工程师吗?

在芯片行业&#xff0c;ATE测试工程师扮演着至关重要的角色。他们不仅需要理解电路和芯片内部的工作原理&#xff0c;还需要利用各种测试工具和方法对芯片进行精确的测试和分析。那么ATE测试工程师前景如何&#xff1f;需要具备哪些技能要求呢&#xff1f; 首先来了解什么是AT…