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

代码随想录训练营第五十六天| 583. 两个字符串的删除操作 、72. 编辑距离

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

题目链接/文章讲解/视频讲解:代码随想录

1.代码展示

//583.两个字符串的删除操作
int minDistance(string word1, string word2) {//step1 构建dp数组,dp[i][j]的含义是要使以i-1为结尾的word1和以j-1为结尾的word2//删除其元素后相同所需最小的删除步数vector<vector<int>> dp(word1.size() + 1, vector<int>(word2.size() + 1, 0));//step2 状态转移方程//if (word1[i - 1] == word[j - 1]) 此时不需要删除,dp[i][j] = dp[i - 1][j - 1];//else ,dp[i][j] = min(dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j - 1] + 2);//对应着三种情况,删除word1[i - 1]或者word2[j - 1]或者同时删除//step3 初始化for (int i = 0; i <= word1.size(); i++) {dp[i][0] = i;}for (int j = 0; j <= word2.size(); j++) {dp[0][j] = j;}//step4 开始遍历for (int i = 1; i <= word1.size(); i++) {for (int j = 1; j <= word2.size(); 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, dp[i][j - 1] + 1, dp[i - 1][j - 1] + 2 });}}}return dp[word1.size()][word2.size()];
}

2.本题小节

        思考: 首先明确dp[i][j]的含义是下标以i-1为结尾的word1和以下标为j-1结尾的word2删除元素相等所需的最少步骤。当word1[i - 1] == word2[j - 1]时,此时不需要删除元素,因此dp[i][j] = dp[i - 1][j - 1];当不相等时,此时既可以删除word1下标i-1处的元素,对应的是dp[i - 1][j] + 1,也可以删除word2下标j-1处的元素,对应的是dp[i][j-1] + 1,也可以是同时删除掉,对应的是dp[i - 1][j - 1] + 2,因此dp[i][j]从上面三种情况中选择最小的。初始化时要注意,dp[i][0]对应的位置初始化为i,dp[0][j]对应位置初始化为j,这个很好想。

        步骤:注意思考的内容,按照步骤来即可。

72. 编辑距离

 题目链接/文章讲解/视频讲解:代码随想录

1.代码展示

//72.编辑距离
int minDistance(string word1, string word2) {//step1 构建dp数组,dp[i][j]的含义是要使以i-1为结尾的word1和以j-1为结尾的word2//相同需要操作(增加、删减、替换)的次数vector<vector<int>> dp(word1.size() + 1, vector<int>(word2.size() + 1, 0));//step2 状态转移方程//if (word1[i - 1] == word[j - 1]) 此时不需要处理,dp[i][j] = dp[i - 1][j - 1];//else ,dp[i][j] = min(dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j - 1] + 1);//对应着三种情况,删掉word1[i - 1](删除),删掉word2[j - 1](增加),替换//step3 初始化for (int i = 0; i <= word1.size(); i++) {dp[i][0] = i;}for (int j = 0; j <= word2.size(); j++) {dp[0][j] = j;}//step4 开始遍历for (int i = 1; i <= word1.size(); i++) {for (int j = 1; j <= word2.size(); 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, dp[i][j - 1] + 1, dp[i - 1][j - 1] + 1 });}}}return dp[word1.size()][word2.size()];
}

2.本题小节

        思考:dp[i][j]的含义是以下标i-1为结尾的word1通过增加,删除,替换能够变成以下标j-1为结尾的word2所需要的最小步骤。当word1[i - 1] == word2[j - 1]时,此时不需要操作,则dp[i][j] = dp[i - 1][j - 1];当不相等时,可以通过删除(删除word1[i - 1])、增加(删除word2[j - 1])、和替换(word1[i - 1]替换为word[j - 1])来操作,分别对应的时dp[i - 1][j] + 1、dp[i][j - 1] + 1、dp[i - 1][j - 1] + 1,选择最小情况,初始化和上题一样。

        基本步骤:根据思考和动态规划的步骤来即可。

编辑距离总结:代码随想录

相关文章:

代码随想录训练营第五十六天| 583. 两个字符串的删除操作 、72. 编辑距离

583. 两个字符串的删除操作 题目链接/文章讲解/视频讲解&#xff1a;代码随想录 1.代码展示 //583.两个字符串的删除操作 int minDistance(string word1, string word2) {//step1 构建dp数组&#xff0c;dp[i][j]的含义是要使以i-1为结尾的word1和以j-1为结尾的word2//删除其元…...

hive解决了什么问题

hive出现的原因 Hive 出现的原因主要有以下几个&#xff1a; 传统数据仓库无法处理大规模数据&#xff1a;传统的数据仓库通常采用关系型数据库作为底层存储&#xff0c;这种数据库在处理大规模数据时效率较低。MapReduce 难以使用&#xff1a;MapReduce 是一种分布式计算框架…...

Lumion 和 Enscape 应该选择怎样的笔记本电脑?

Lumion 和 Enscape实时渲染对配置要求高&#xff0c;本地配置不够&#xff0c;如何快速解决&#xff1a; 本地普通电脑可一键申请高性能工作站&#xff0c;资产安全保障&#xff0c;供软件中心&#xff0c;各种软件插件一键获取&#xff0c;且即开即用&#xff0c;使用灵活&am…...

ICCV 2023 | MoCoDAD:一种基于人体骨架的运动条件扩散模型,实现高效视频异常检测

论文链接&#xff1a; https://arxiv.org/abs/2307.07205 视频异常检测&#xff08;Video Anomaly Detection&#xff0c;VAD&#xff09;扩展自经典的异常检测任务&#xff0c;由于异常情况样本非常少见&#xff0c;因此经典的异常检测通常被定义为一类分类问题&#xff08;On…...

Mac电脑怎么使用NTFS磁盘管理器 NTFS磁盘详细使用教程

Mac是可以识别NTFS硬盘的&#xff0c;但是macOS系统虽然能够正确识别NTFS硬盘&#xff0c;但只支持读取&#xff0c;不支持写入。换句话说&#xff0c;Mac不支持对NTFS硬盘进行编辑、创建、删除等写入操作&#xff0c;比如将Mac里的文件拖入NTFS硬盘&#xff0c;在NTFS硬盘里新…...

Java设计模式-结构性设计模式(代理设计模式)

简介 为其他对象提供⼀种代理以控制对这个对象的访问&#xff0c;属于结构型模式。客户端并不直接调⽤实际的对象&#xff0c;⽽是通过调⽤代理&#xff0c;来间接的调⽤实际的对象应用场景 各⼤数码专营店&#xff0c;代理⼚商进⾏销售对应的产品&#xff0c;代理商持有真正的…...

线性空间、子空间、基、基坐标、过渡矩阵

线性空间的定义 满足加法和数乘封闭。也就是该空间的所有向量都满足乘一个常数后或者和其它向量相加后仍然在这个空间里。进一步可以理解为该空间中的所有向量满足加法和数乘的组合封闭。即若 V 是一个线性空间&#xff0c;则首先需满足&#xff1a; 注&#xff1a;线性空间里面…...

【MySQL】CRUD (增删改查) 基础

CRUD&#xff08;增删改查&#xff09;基础 一. CRUD二. 新增 &#xff08;Create&#xff09;1. 单行数据 全列插入2. 多行数据 指定列插入 三. 查询&#xff08;Retrieve&#xff09;1. 全列查询2. 指定列查询3. 查询字段为表达式4. 别名5. 去重&#xff1a;DISTINCT6. 排序…...

Socks5代理IP:保障跨境电商的网络安全

在数字化时代&#xff0c;跨境电商已成为全球商业的重要一环。然而&#xff0c;随着其发展壮大&#xff0c;网络安全问题也逐渐浮出水面。为了确保跨境电商的安全和隐私&#xff0c;Socks5代理IP技术成为了一项不可或缺的工具。本文将深入探讨Socks5代理IP在跨境电商中的应用&a…...

macOS通过钥匙串访问找回WiFi密码

如果您忘记了Mac电脑上的WiFi密码&#xff0c;可以通过钥匙串访问来找回它。具体步骤如下&#xff1a; 1.打开Mac电脑的“启动台”&#xff0c;然后在其他文件中找到“钥匙串访问”。 2.运行“钥匙串访问”应用程序&#xff0c;点击左侧的“系统”&#xff0c;然后在右侧找到…...

Debian11之稳定版本Jenkins安装

官方网址 系统要求 机器要求 256 MB 内存&#xff0c;建议大于 512 MB 10 GB 的硬盘空间&#xff08;用于 Jenkins 和 Docker 镜像&#xff09;软件要求 Java 8 ( JRE 或者 JDK 都可以) Docker &#xff08;导航到网站顶部的Get Docker链接以访问适合您平台的Docker下载安装…...

kakfa 3.5 kafka服务端处理消费者客户端拉取数据请求源码

一、服务端接收消费者拉取数据的方法二、遍历请求中需要拉取数据的主题分区集合&#xff0c;分别执行查询数据操作&#xff0c;1、会选择合适的副本读取本地日志数据(2.4版本后支持主题分区多副本下的读写分离) 三、会判断当前请求是主题分区Follower发送的拉取数据请求还是消费…...

【Linux】进程概念I --操作系统概念与冯诺依曼体系结构

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法…感兴趣就关注我吧&#xff01;你定不会失望。 本篇导航 1. 冯诺依曼体系结构为什么这样设计? 2. 操作系统概念为什么我们需要操作系统呢?操作系统怎么进行管理? 计算机是由两部分组…...

BRAM/URAM资源介绍

BRAM/URAM资源简介 Bram和URAM都是FPGA&#xff08;现场可编程门阵列&#xff09;中的RAM资源。 Bram是Block RAM的缩写&#xff0c;是Xilinx FPGA中常见的RAM资源之一&#xff0c;也是最常用的资源之一。它是一种单独的RAM模块&#xff0c;通常用于存储大量的数据&#xff0…...

分享一个基于python的个性推荐餐厅系统源码 餐厅管理系统代码

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人七年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、微信小程序、爬虫、大数据等&#xff0c;大家有这一块的问题可以一起交流&#xff01; &#x1…...

Mysql5.7开启SSL认证且支持Springboot客户端验证

Mysql5.7开启SSL认证 一、查看服务端mysql环境 1.查看是否开启了ssl,"have_ssl" 为YES的时候,数据库是开启加密连接方式的。 show global variables like %ssl%;2.查看数据库版本 select version();3.查看数据库端口 show variables like port;4.查看数据库存放…...

微信小程序的页面滚动事件监听

微信小程序中可以通过 Page 的 onPageScroll 方法来监听页面滚动事件。具体步骤如下&#xff1a; 在页面的 onLoad 方法中注册页面滚动事件监听器&#xff1a; Page({onLoad: function () {wx.pageScrollTo({scrollTop: 0,duration: 0});wx.showLoading({title: 加载中,});wx…...

数据可视化:四大发明的现代转化引擎

在科技和工业的蓬勃发展中&#xff0c;中国的四大发明——造纸术、印刷术、火药和指南针&#xff0c;早已不再是古代创新的象征&#xff0c;而是催生了众多衍生行业的崭新可能性。其中&#xff0c;数据可视化技术正成为这些行业的一颗璀璨明珠&#xff0c;开启了全新的时代。 1…...

HarmonyOS实现几种常见图片点击效果

一. 样例介绍 HarmonyOS提供了常用的图片、图片帧动画播放器组件&#xff0c;开发者可以根据实际场景和开发需求&#xff0c;实现不同的界面交互效果&#xff0c;包括&#xff1a;点击阴影效果、点击切换状态、点击动画效果、点击切换动效。 相关概念 image组件&#xff1a;图片…...

3D视觉测量:计算两个平面之间的夹角(附源码)

文章目录 1. 基本内容2. 代码实现文章目录:形位公差测量关键内容:通过视觉方法实现平面之间夹角的计算1. 基本内容 要计算两个平面之间的夹角,首先需要知道这两个平面的法向量。假设有两个平面,它们的法向量分别为 N 1 和 N 2 N_1 和 N_2...

deepin V23通过flathub安装steam畅玩游戏

deepin V23缺少32位库&#xff0c;在星火商店安装的steam,打开报错&#xff0c;无法使用&#xff01; 通过flathub网站安装steam,可以正常使用&#xff0c;详细教程如下&#xff1a; flathub网址&#xff1a;主页 | Flathub 注意&#xff1a;flathub下载速度慢&#xff0c;只…...

C语言是否快被时代所淘汰?

今日话题&#xff0c;C语言是否快被时代所淘汰&#xff1f;在移动互联网的冲击下&#xff0c;windows做的人越来越少&#xff0c;WP阵营没人做&#xff0c;后台简单的php&#xff0c;复杂的大数据处理的java&#xff0c;要求性能的c。主流一二线公司基本上没多少用C#的了。其实…...

简化转换器:使用您理解的单词进行最先进的 NLP — 第 1 部分 — 输入

一、说明 变形金刚是一种深度学习架构&#xff0c;为人工智能的发展做出了杰出贡献。这是人工智能和整个技术领域的一个重要阶段&#xff0c;但也有点复杂。截至今天&#xff0c;变形金刚上有很多很好的资源&#xff0c;那么为什么要再制作一个呢&#xff1f;两个原因&#xff…...

C++多线程编程(第三章 案例2,条件变量,生产者-消费者模型)

目录 1、condition_variable1.1、生产者消费者模型1.2、改变共享变量的线程步骤1.3、等待信号读取共享变量的线程步骤1.3.1、获得改变共享变量线程共同的mutex1.3.2、wait()等待信号通知1.3.2.1、无lambda表达式1.3.2.2 lambda表达式 样例代码 1、condition_variable 等待中&a…...

Go语言使用AES加密解密

Go语言提供了标准库中的crypto/aes包来支持AES加密和解密。下面是使用AES-128-CBC模式加密和解密的示例代码&#xff1a; package mainimport ("crypto/aes""crypto/cipher""encoding/base64""fmt" )func main() {key : []byte("…...

MAC ITEM 解决cd: string not in pwd的问题

今天使用cd 粘贴复制的路径的时候,报了这么一个错. cd: string not in pwd eistert192 Library % cd Application Support cd: string not in pwd: Application eistert192 Library % 让人一脸懵逼. 对比一下,发现中文路径里的空格截断了路径 导致后面的路径就没有办法被包含…...

解决跨域的几种方式

解决跨域的几种方式 JSONPCORS&#xff08;跨域资源共享&#xff09;代理 JSONP 利用script标签可以跨域加载资源的特性&#xff0c;通过动态创建一个script标签&#xff0c;然后将响应数据作为回调函数的参数返回&#xff0c;从而实现跨域请求资源。该方式只支持 GET 请求方式…...

单片机-LED介绍

简介 LED 即发光二极管。它具有单向导电性&#xff0c;通过 5mA 左右电流即可发光 电流 越大&#xff0c;其亮度越强&#xff0c;但若电流过大&#xff0c;会烧毁二极管&#xff0c;一般我们控制在 3 mA-20mA 之间&#xff0c;通常我们会在 LED 管脚上串联一个电阻&#xff0c…...

ERROR:GLOBAL_INITIALISERS: do not initialise globals to 0

错误信息 ERROR:GLOBAL_INITIALISERS: do not initialise globals to 0 表示全局变量的初始化值不应该为0。这个错误通常出现在一些编程语言&#xff08;如C、C&#xff09;的编译过程中&#xff0c;以帮助程序员避免一些潜在的问题。 在一些编程语言中&#xff0c;全局变量的…...

高德地图,绘制矢量图形并获取经纬度

效果如图 我用的是AMapLoader这个地图插件,会省去很多配置的步骤,非常方便 首先下载插件,然后在局部引入 import AMapLoader from "amap/amap-jsapi-loader";然后在methods里面使用 // 打开地图弹窗mapShow() {this.innerVisible true;this.$nextTick(() > {…...

北京市建设监理协会官方网站/友链交换网站

数据类型&#xff1a; 可变对象与不可变对象&#xff1a; 元组&#xff08;tuple)、数值型&#xff08;number)、字符串(string)均为不可变对象&#xff0c;而字典型(dictionary)和列表型(list)&#xff0c;集合(set)的对象是可变对象。字典的key一定要是不可变对象 无序与有序…...

三亚兼职招聘信息网站/广州网络推广外包平台

1. C中格式控制 在C中&#xff0c;说到保留小数点后几位有效数字&#xff0c;就会想起setprecision,马上去cplusplus上查了下有关setprecision的资料&#xff0c;看了后明白了&#xff0c;懒得逐字翻译&#xff0c;直接贴在下面了&#xff1a;Set decimal precision Sets …...

图书馆网站开发策划书/摘抄一篇新闻

偏微分方程的数值解系列博文&#xff1a; 偏微分方程的数值解(一):定解问题 & 差分解法 偏微分方程的数值解(二): 一维状态空间的偏微分方程的 MATLAB 解法 偏微分方程的数值解(三): 化工应用实例 ----------触煤反应装置内温度及转换率的分布 偏微分方程的数值解(四):…...

深圳大兴汽车集团网站建设/二级域名查询入口

小渣来说动态规划了&#xff1a; 首先说一说斐波拉契数列&#xff08;1&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;5......&#xff09;&#xff0c;如图&#xff1a; 这些就是小渣理解的动态规划&#xff0c;欢迎大佬来补充。 这些是经典的动态规划题&#xff1a; h…...

首饰网站建设策划案/seo做关键词怎么收费的

说到接口开发&#xff0c;能想到的开发语言有很多种&#xff0c;像什么Java啊、.NET啊、PHP啊、NodeJS啊&#xff0c;太多可以用。为什么选择Java&#xff0c;究其原因&#xff0c;最后只有一个解释&#xff0c;那就是“学Java的人多&#xff0c;人员招聘范围大&#xff0c;有利…...

wordpress 开发商城/网站外链出售

第1章 剩余部分1-9章 https://download.csdn.net/download/qq_48104689/16240646?spm1001.2014.3001.5501 9-13章&#xff1a; https://download.csdn.net/download/qq_48104689/16240894?spm1001.2014.3001.5501...