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

今天接触到了真正的距离,但可以通过增删改操作来逼近。

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

给定两个单词 word1 和 word2 ,返回使得 word1 和  word2 相同所需的最小步数

每步 可以删除任意一个字符串中的一个字符。

思路:该题关键在于理解删除,删除操作即多走一步,由之前的状态进行推导。首先dp[i][j]还是表示从s[i]到t[j]需要的步数,初始化时是从0到s[i]所需删除元素,故为i。通过观察易发现dp可由dp[i-1]j-1],dp[i-1][j],p[i][j-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();i++) dp[i][0] = i;for(int j = 0;j <= word2.size();j++) dp[0][j] = j;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][j-1]+1,dp[i-1][j]+1);}}return dp[word1.size()][word2.size()]; }};

问题2:72. 编辑距离 - 力扣(LeetCode)

给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数  。

你可以对一个单词进行如下三种操作:

  • 插入一个字符
  • 删除一个字符
  • 替换一个字符

思路:该题一上来我就去寻找规律,并没有尝试去真正理解增删改操作怎么去替代,并且在绘制例子矩阵时也较为粗心,导致最后找出来的规律是错误的。其实这类题目并没有什么套路,想想怎样将题目允许的变化做相应操作即可,具体代码如下:

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();i++) dp[i][0] = i;for(int j = 0;j <= word2.size();j++) dp[0][j] = j;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][j-1],dp[i-1][j],dp[i-1][j-1]}) + 1;}}return dp[word1.size()][word2.size()];}
};

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

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

相关文章

Mysql学习之——增删改查语句

Mysql的增删改查 一、数据库操作 1.查询所有数据库 show databases&#xff1b;2.使用某个数据库 如果我已经通过show databases知道有a、b、c三个数据库&#xff0c;那我想用数据库a怎么办呢? use 数据库名&#xff1b; eg:use a;3.查询当前使用的数据库 如果我不知道当…

请大家一定不要像我们公司这样打印log日志

前言 最近接手了公司另一个项目&#xff0c;熟悉业务和代码苦不堪言。 我接手一个新项目&#xff0c;有个习惯&#xff0c;就是看结构&#xff0c;看数据库&#xff0c;搜代码。 其中搜代码是我个人这些年不知不觉形成的癖好&#xff0c;我下面给大家展示下这个小癖好。 正文 我…

vue3:3、项目目录和关键文件

关于vsvode的更改 <!-- 加上setup允许在script中直接编写组合式api --> <script setup> // 组件引入后直接用 import HelloWorld from ./components/HelloWorld.vue import TheWelcome from ./components/TheWelcome.vue</script><!-- 1、js放在最上面&am…

linux安装postgresql13

linux安装postgresql13 1. 安装2. 数据库初始化3.配置远程访问3.1 修改配置文件3.2 重启服务3.3 测试连接 1. 安装 linux下载链接&#xff1a;https://www.postgresql.org/download/linux/ubuntu/安装命令sudo sh -c echo "deb https://apt.postgresql.org/pub/repos/apt…

Linux 中的 chmod 命令及示例

在 Unix 操作系统中,chmod命令用于更改文件的访问模式。该名称是change mode的缩写。其中规定每个文件和目录都有一组权限来控制权限,例如谁可以读取、写入或执行该文件。其中权限分为三类:同时读、写和执行,用“r”、“w”和“x”表示。这些字母组合在一起形成一组用户的特…

20230908_python练习_服务端与客户端数据交互

用户可以通过简单操作进行服务端数据交互&#xff0c;通过简单的sql语句直接获取EXCEL表&#xff0c;可以用来作为交互的基础。主要涉及三部分&#xff1a; 1:数据库存储表结构 --日志记录表结构 create table shzc.yytowz_service_title (leixing varchar2(18),ziduan1 v…

软件测试/测试开发丨学会与 AI 对话,高效提升学习效率

点此获取更多相关资料 简介 ChatGPT 的主要优点之一是它能够理解和响应自然语言输入。在日常生活中&#xff0c;沟通本来就是很重要的一门课程&#xff0c;沟通的过程中表达越清晰&#xff0c;给到的信息越多&#xff0c;那么沟通就越顺畅。 和 ChatGPT 沟通也是同样的道理&…

单目标应用:基于成长优化算法(Growth Optimizer,GO)的微电网优化调度MATLAB

一、微网系统运行优化模型 微电网是由分布式电源、储能装置和能量转换装置等组成的小型发配电系统&#xff0c;具有成本低、电压低、污染小等特点。由于环保和能源压力&#xff0c;清洁可再生能源和分布式能源工业发展潜力巨大。微电网控制器可实现对电网的集中控制&#xff0…

搭建RabbitMQ消息服务,整合SpringBoot实现收发消息

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;3年JAVA全栈开发经验&#xff0c;专注JAVA技术、系统定制、远程指导&#xff0c;致力于企业数字化转型&#xff0c;CSDN博客专家&#xff0c;蓝桥云课认证讲师。 目录 一、前言1.1 什么是消息队列1.2 RabbitMQ 是什么1.…

Linux:【Mysql】Centos7安装mysql8.0

目录 一、环境及版本介绍 二、安装前准备 三、开始安装 一、环境及版本介绍 Linux环境&#xff1a;Centos7 Mysql版本&#xff1a;8.0.26 安装时使用的用户&#xff1a;root 二、安装前准备 1.1、下载Centos7镜像 网上寻找相关资源即可 1.2、下载VMwareWorkstation Pro并…

【LeetCode-中等题】208. 实现 Trie (前缀树)

文章目录 题目方法一&#xff1a;利用数组构建26叉树方法二&#xff1a;利用哈希表构建26叉树 题目 方法一&#xff1a;利用数组构建26叉树 插入图示&#xff1a; 全搜索和前缀搜索&#xff1a; 注意&#xff1a;全局匹配匹配完直接返回插入时的标志位 而前缀匹配时&#xff…

OpenWrt系统开发笔记

openWrt英文官网&#xff1a; https://openwrt.org/ 中文官网&#xff1a; http://www.openwrt.org.cn/ 一、开发环境及编译 在github上有两个源码使用的比较多   一个是lede,地址为&#xff1a;https://github.com/coolsnowwolf/lede   另一个为OpenWrt的官方源码&#…

Redis 管道

1. 面试题 1.1 如何优化频繁命令往返造成的性能瓶颈? 1.2 问题由来 Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。一个请求会遵循以下步骤&#xff1a; 1 客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果)&#xff0c;并监听Socket返…

清空一下问题机器的ClickOnce cache

清空ClickOnce缓存通常需要通过操作系统的命令行工具来完成。以下是在Windows操作系统上清空ClickOnce缓存的步骤&#xff1a; 1. **关闭所有ClickOnce应用程序**&#xff1a;在清空缓存之前&#xff0c;确保没有任何ClickOnce应用程序正在运行。 2. 打开**命令提示符**&…

2023国赛A题全保姆教程代码思路 定日镜场的优化设计

A 题 定日镜场的优化设计 更多完整解题可查看B站:不知名数学家小P 构建以新能源为主体的新型电力系统&#xff0c; 是我国实现“碳达峰”“碳中和”目标的一项重要 措施。塔式太阳能光热发电是一种低碳环保的新型清洁能源技术[1]。 定日镜是塔式太阳能光热发电站(以下简称塔式…

Redis 复制(replica)

1. 是什么 1.1 官网地址 https://redis.io/docs/management/replication/ 1.2 一句话 1. 就是主从复制&#xff0c;master以写为主&#xff0c;slave以读为主 2. 当master数据变化的时候&#xff0c;自动将新的数据异步同步到其它slave数据库 2. 能干嘛 1. 读写分离 2. 容灾…

智能化电力运维:数字孪生的崭露头角

随着科技的不断发展&#xff0c;数字孪生技术在各个领域的应用愈发广泛&#xff0c;尤其在电力运维领域&#xff0c;它正发挥着革命性的作用。数字孪生是一种虚拟仿真技术&#xff0c;通过实时模拟真实世界的物理对象或过程&#xff0c;可以从多方面为电力运维带来改变&#xf…

HTTP 和 HTTPS

一.HTTP HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是一种用于在网络上传输超文本&#xff08;Hypertext&#xff09;和其他资源的应用层协议。HTTP是Web中最常用的协议之一&#xff0c;它使得浏览器可以请求和显示网页&#xff0c;也允许服务器传送网页内容和其…

评估驾驶员头部姿态变化幅度的统计方法

人脸识别 文章目录 人脸识别前言一、常用的统计方法二、具体实现总结 前言 评估驾驶员头部姿态变化幅度的统计方法可以帮助分析驾驶员的注意力和警觉性。 一、常用的统计方法 评估驾驶员头部姿态变化幅度的统计方法可以帮助分析驾驶员的注意力和警觉性。以下是一些常用的统计…

PEX装机

目录 一、PXE是什么&#xff1f; 二、PXE的组件&#xff1a; vsftpd/httpd/nfs tftp dhcp 三、配置vsftpd 四、配置tftp 1.安装tftp-server 2.启动tftp 五、准备pxelinx.0文件、引导文件、内核文件 1.准备pxelinux.0文件 2.准备引导文件、内核文件 六、配置dhcp …