LeetCode 583两个字符串的删除操作 72编辑距离 | 代码随想录25期训练营day56

动态规划算法13

LeetCode 583 两个字符串的删除操作 2023.12.19

  • 题目链接
  • 代码随想录讲解[链接]
    在这里插入图片描述
int minDistance(string word1, string word2) {
    //思路1,求除了最长公共序列外,两个字符串需删除的字符数
    //以下为求最长公共序列长度的动态规划方法
    /*
        vector<vector<int>> dp(word1.size()+1, vector<int>(word2.size()+1, 0));
        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] + 1;
                else
                    dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
            }
        }
        //最后返回word1、word2相对最长公共序列需要操作的次数和
        return (word1.size()-dp[word1.size()][word2.size()])+(word2.size()-dp[word1.size()][word2.size()]);
        */

    //思路2,单纯计算两个字符串需要的最小操作次数
    //1确定二维dp数组,dp[i][j]表示以word1[0, i-1]字符串与word2[0, j-1]字符串相同的最小操作次数
    vector<vector<int>> dp(word1.size()+1, vector<int>(word2.size()+1, 0));
    //3初始化dp数组,由于递推公式中dp[i][j]可由dp[i-1][j-1]、dp[i][j-1]、dp[i-1][j]得到
    //那么初始化首行与首列,dp[0][i]含义为空字符串与以word2[0, i-1]字符串相同的最小操作次数,那么为i
    for (int i = 0; i <= word1.size(); i++)
        dp[i][0] = i;
    for (int i = 0; i <= word2.size(); i++)
        dp[0][i] = i;
    //2确定递推公式 4确定遍历顺序
    //顺序遍历
    for (int i = 1; i <= word1.size(); i++)
    {
        for(int j = 1; j <= word2.size(); j++)
        {
            //word1[i-1] == word2[j-1]时,不用操作,dp[i][j]=dp[i-1][j-1]
            if(word1[i-1] == word2[j-1])
                dp[i][j] = dp[i-1][j-1];
            //不相等时,需要操作,那么取一个最小操作次数
            //dp[i][j-1]需对word2删除一个,dp[i-1][j]需对word1删除一个,dp[i-1][j-1]需对word1、word2分别删除一个
            else
                dp[i][j] = min(min(dp[i][j-1] + 1, dp[i-1][j] + 1), dp[i-1][j-1] + 2);
        }
    }
    //最后返回word1与word2达到相同的最小操作次数
    return dp[word1.size()][word2.size()];
}

LeetCode 72 编辑距离 2023.12.19

  • 题目链接
  • 代码随想录讲解[链接]
    在这里插入图片描述
int minDistance(string word1, string word2) {
    //1确定二维dp数组,dp[i][j]表示以word1[0, i-1]字符串与word2[0, j-1]字符串相同的最小操作次数
    vector<vector<int>> dp(word1.size()+1, vector<int>(word2.size()+1, 0));
    //3初始化dp数组,由于递推公式中dp[i][j]可由dp[i-1][j-1]、dp[i][j-1]、dp[i-1][j]得到
    //那么初始化首行与首列,dp[0][i]含义为空字符串与以word2[0, i-1]字符串相同的最小操作次数,那么为i
    for (int i = 0; i <= word1.size(); i++)
        dp[i][0] = i;
    for (int i = 0; i <= word2.size(); i++)
        dp[0][i] = i;
    //2确定递推公式 4确定遍历顺序
    //顺序遍历
    for (int i = 1; i <= word1.size(); i++)
    {
        for(int j = 1; j <= word2.size(); j++)
        {
            //word1[i-1] == word2[j-1]时,不用操作,dp[i][j]=dp[i-1][j-1]
            if(word1[i-1] == word2[j-1])
                dp[i][j] = dp[i-1][j-1];
            //不相等时,需要操作,那么取一个最小操作次数
            //dp[i][j-1]需对word2删除(或增加)一个,dp[i-1][j]需对word1删除(或增加)一个,dp[i-1][j-1]需对word1或word2替换一个
            else
                dp[i][j] = min(min(dp[i-1][j]+1, dp[i][j-1]+1), dp[i-1][j-1]+1);
        }
    }
    //最后返回word1与word2达到相同的最小操作次数
    return dp[word1.size()][word2.size()];
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

让AIGC成为你的智能外脑,助力你的工作和生活

人工智能成为智能外脑 在当前的科技浪潮中&#xff0c;人工智能技术正在以前所未有的速度改变着我们的生活和工作方式。其中&#xff0c;AIGC技术以其强大的潜力和广泛的应用前景&#xff0c;正在引领着这场革命。 AIGC技术是一种基于人工智能的生成式技术&#xff0c;它可以通…

Arcgis导出为tiff

原有一幅影像&#xff0c;在进行一些操作之后&#xff0c;需要导出为tiff 比如我对他进行一个重采样&#xff0c;48m分辨率变为96m 在重采样后的数据图层上右键&#xff0c;导出数据 为什么有时会导出为.gdb格式的呢&#xff1f; 可能是位置处在一个文件地理数据库.gdb下

vue + element 项目表格多选根据状态来禁用

首先如图效果 对elementUI中table表格的多选框进行 可勾选 和 不可勾选 的处理 给 type 属性为 selection 的加一个事件:selectableselected’ <el-table-column type"selection" width"55" :selectable"selected"> </el-table-colum…

《PySpark大数据分析实战》-15.云服务模式Databricks介绍创建集群

&#x1f4cb; 博主简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是wux_labs。&#x1f61c; 热衷于各种主流技术&#xff0c;热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员&#xff08;PCTA&#xff09;、TiDB数据库专家&#xff08;PCTP…

Python爬虫之两种urlencode编码发起post请求方式

背景 闲来无事想爬一下牛客网的校招薪资水平及城市分布&#xff0c;最后想做一个薪资水平分布的图表出来 于是发现牛客使用的是application/x-www-form-urlencoded的格式 测试 首先可以先用apipost等测试工具先测试一下是否需要cookie之类的&#xff0c;发现是不需要的&…

内网渗透测试基础——内网信息收集

内网渗透测试基础——内网信息收集 在内网渗透测试环境中&#xff0c;有很多设备和防护软件&#xff0c;例如Bit9、ArcSight、Maniant等。它们通过收集目标内网的信息&#xff0c;洞察内网网络拓扑结构&#xff0c;找出内网中最薄弱的环节。信息收集的深度&#xff0c;直接关系…

即兴小索奇-MyBatis全套笔记

一、MyBatis 1、MyBatis简介 1.1、MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下&#xff0c; iBatis3.x正式更名为MyBatis&#xff08;3之前还是iBatis&…

Docker 核心技术

Docker 定义&#xff1a;于 Linux 内核的 Cgroup&#xff0c;Namespace&#xff0c;以及 Union FS 等技术&#xff0c;对进程进行封装隔离&#xff0c;属于操作系统层面的虚拟化技术&#xff0c;由于隔离的进程独立于宿主和其它的隔离的进程&#xff0c;因此也称其为容器Docke…

MicroBin让代码共享更简单

什么是 MicroBin &#xff1f; MicroBin 是一个超小型&#xff0c;功能丰富、可配置、安全、独立且自托管的Pastebin Web 应用程序。但更简单&#xff0c;可通过调整环境变量来添加或删除功能&#xff0c;具有 URL 重定向、自动文件过期、原始文件服务、5 级隐私设置、二维码共…

工业一体化污水处理设备有哪些

工业一体化污水处理设备是目前污水处理领域中的重要技术手段之一&#xff0c;对于各行各业的生产过程中产生的污水进行高效、环保的处理至关重要。如今&#xff0c;工业一体化污水处理设备已经得到广泛应用&#xff0c;并得到了许多企业和环保机构的认可。在本文中&#xff0c;…

手把手带你死磕ORBSLAM3源代码(一)目录详解

目录 一.引言 二.关键目录 2.1Examples目录 2.2 Include目录 2.3 src目录 一.引言 ORB-SLAM3是一种基于特征点的稀疏实时单目SLAM&#xff08;Simultaneous Localization and Mapping&#xff09;系统。它是ORB-SLAM系列模型的第三代版本&#xff0c;用于在无人机、机器人…

多目标跟踪学习

本文来源&#xff1a; 目标跟踪那些事儿-技术和课程介绍_哔哩哔哩_bilibili 为该视频的学习笔记 目的&#xff1a;我的学习目的主要是了解现有的跟踪算法&#xff0c;并着重了解卡尔曼滤波算法&#xff0c;利用卡尔曼滤波算法进行多目标跟踪等后续一系列估计算法。老师视频中提…

从零开始学小波变换

小波变换 哈尔变换 对于哈尔变换可以用如下矩阵表示: T H F H T THFH^T THFHT 其中&#xff0c; F F F为一个 N N N\times N NN大小的图像矩阵&#xff0c; H H H为一个 N N N\times N NN大小的哈尔变换矩阵&#xff0c; T T T一个 N N N\times N NN大小的图像变换的结果…

多维时序 | MATLAB实现KOA-CNN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测

多维时序 | MATLAB实现KOA-CNN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现KOA-CNN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现KOA-CNN-B…

el-select multiple表单校验问题

记录一个el-select复选框表单校验例子 1、一打开页面就会触发校验 解决方案&#xff1a;设置初始值为空数组 2、选中下拉数据&#xff0c;不会再次触发校验&#xff0c;导致提示文字一直存在 解决这个问题&#xff0c;首先先看看v-model 、prop属性、rules校验是否正确&#…

【位运算】136.只出现1次的数字

题目 进阶题目&#xff1a;剑指&#xff1a;找出数组中2个只出现1次的数字 剑指&#xff1a;数组中数字出现的次数 异或基本性质&#xff1a; 法1&#xff1a;异或位运算 class Solution {public int singleNumber(int[] nums) {int res 0;for (int i : nums) {res ^ i;}re…

机器学习---bagging与随机森林

1. bagging算法 集成学习有两个流派&#xff1a;一个是boosting派系&#xff0c;它的特点是各个弱学习器之间有依赖关系。另一种是 bagging流派&#xff0c;它的特点是各个弱学习器之间没有依赖关系&#xff0c;可以并行拟合。 Bagging的弱学习器之间的确没有boosting那样的联…

操作系统之银行家算法

Dijkstra在1965年提出的银行家算法是著名的死锁避免算法&#xff0c;这个用于一个银行家给多个顾客贷款的算法可以直接用于操作系统给进程分配资源&#xff0c;这时只要把银行家换成操作系统&#xff0c;把顾客换成进程&#xff0c;把资金换成资源&#xff0c;把银行家决定是否…

redis基本用法学习(字符串类型基本操作)

字符串类型是redis支持的最简单的数据类型&#xff0c;同时最简单的键值对类型也是key和value都是单个字符串&#xff0c;本质上就是字符串之间的相互映射&#xff0c;redis官网String类型简介页面提到可以用于缓存HTML片段或页面内容。   redis支持设置/获取单个键值对&…

Python | Flask测试:发送post请求的接口测试

HTTP/1.1 协议规定的 HTTP 请求方法有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 几种。POST通常用来向服务端提交数据&#xff0c;主要用于提交表单、上传文件。 HTTP 协议是以ASCII码传输&#xff0c;建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为…