LeetCode 第55天 | 583. 两个字符串的删除操作 72. 编辑距离 动态规划

583. 两个字符串的删除操作
求两个字符串的最长公共子序列,用两个字符串的长度减去两倍的最长公共子序列长度即为需要进行的最少次数的删除活动。

class Solution {
public:int minDistance(string word1, string word2) {// 求最长公共子序列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++) {// dp整体向右下移动一个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]);}}}// 用两个字符串的长度和减去最长公共子序列的两倍即结果return word1.size()+word2.size()-2*dp[word1.size()][word2.size()];}
};

采用代码随想录的方法。一知半解。

class Solution {
public:int minDistance(string word1, string word2) {vector<vector<int>> dp(word1.size()+1, vector<int>(word2.size()+1, 0));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++) {// dp[i][j]:以i-1为结尾的字符串word1,// 和以j-1位结尾的字符串word2,想要达到相等,所需要删除元素的最少次数。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);}}}return dp[word1.size()][word2.size()];}
};

72. 编辑距离
这个是一类问题,如果word1[i] == word2[j],可以不做修改,dp[i][j] = dp[i-1][j-1];如果 word1[i] != word2[j],则可以两个字符都退一位,替换一个字符;或者word1删除一位;或者word2删除一位;则递推公式为:
dp[i][j] = min({dp[i-1][j-1], dp[i][j-1], dp[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, 0));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++) {// dp[i][j] 表示以下标i-1为结尾的字符串word1,// 和以下标j-1为结尾的字符串word2,最近编辑距离为dp[i][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], dp[i-1][j]}) + 1;}}}return dp[word1.size()][word2.size()];}
};

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

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

相关文章

如何配置IDEA中的JavaWeb环境(2023最新版)

创建项目 中文版&#xff1a;【文件】-【新建】-【项目】 点击【新建项目】&#xff0c;改好【名称】点击【创建】 右键自己建立的项目-【添加框架支持】&#xff08;英文版是Add Framework Support...&#xff09; 勾选【Web应用程序】-【确定】 配置tomcat 点击编辑配置 点…

人民网发稿多少钱?媒介多多告诉你答案!附人民网各频道报价表

你是否也想知道在人民网发稿需要多少钱&#xff1f;媒介多多告诉你答案&#xff01;人民网是国内权威新闻平台之一&#xff0c;拥有大量忠实读者群体。想要在人民网上发稿进行推广&#xff0c;是很多企业和个人的选择。那么&#xff0c;人民网发稿到底需要多少钱呢&#xff1f;…

云计算,用价格让利换创新空间?

文 | 智能相对论 作者 | 李源 ECS&#xff08;云服务器&#xff09;最高降36%、OSS&#xff08;对象存储&#xff09;最高降55%、RDS&#xff08;云数据库&#xff09;最高降40%…… 阿里云惊人的降幅&#xff0c;一次性把国内云计算厂商的价格战推到了白热化阶段。 这次能…

魔众智能AI系统v2.1.0版本支持主流大模型(讯飞星火、文心一言、通义千问、腾讯混元、Azure、MiniMax、Gemini)

支持主流大模型&#xff08;讯飞星火、文心一言、通义千问、腾讯混元、Azure、MiniMax、Gemini&#xff09; [新功能] 系统全局消息提示 UI 全新优化 [新功能] JS 库增加【ijs】类型字符串&#xff0c;支持默认可执行代码 [新功能] 分类快捷操作工具类 CategoryUtil [新功能…

腾讯IEG前端一面凉经

你为什么选择了前端&#xff0c; 你做项目会不会注重工程&#xff0c;原理和基础会不会生疏&#xff0c; 原型和原型链(原型链箭头图)&#xff0c; 基本数据类型和引用数据类型及根本区别&#xff0c; 堆栈区别&#xff0c; 类型判断(typeof instanceof具体区别)&#xff…

接口自动化测试从入门到高级实战!

接口测试背景和必要性 接口测试是测试系统组件间接口&#xff08;API&#xff09;的一种测试&#xff0c;主要用于检测内部与外部系统、内部子系统之间的交互质量&#xff0c;其测试重点是检查数据交换、传递的准确性&#xff0c;控制和交互管理过程&#xff0c;以及系统间相互…

练习3-4 统计字符

探索--题目集索引 本题要求编写程序&#xff0c;输入10个字符&#xff0c;统计其中英文字母、空格或回车、数字字符和其他字符的个数。 输入格式: 输入为10个字符。最后一个回车表示输入结束&#xff0c;不算在内。 输出格式: 在一行内按照 letter 英文字母个数, blank …

【算法】并查集

find函数 用于查找一个数字的祖宗数字 比如 初始时&#xff0c;每个数字的祖宗是自己 find(i) i 若 要把 3 和 4 合并 则把3的祖宗设置为4 此时 p(find(3)) 4 若 要把 5 和 3 合并&#xff0c; 则先找到5和3的祖宗&#xff0c; 再把5的祖宗设置为3的祖宗 p[find(5)] find(3)…

Apache Paimon 使用之 Querying Tables

Querying Tables 1.Batch Query Paimon的批量读取返回表快照中的所有数据。默认情况下&#xff0c;批处理读取返回最新的快照。 -- Flink SQL SET execution.runtime-mode batch;2.Batch Time Travel Paimon批量读取指定快照或标签的数据。 Flink 动态配置 -- read the …

鸿蒙开发(二)-项目结构

鸿蒙开发(二)-项目结构 上篇文章我们讲了如何配置鸿蒙开发的基础环境&#xff0c;以及创建了第一个鸿蒙程序。 这篇我们讲述了鸿蒙应用的项目目录结构。 如图所示&#xff1a;我们切换项目project可以看到。 另一种则是Ohos模式: AppScope->app.json5 应用的全局配置 {&q…

300分钟吃透分布式缓存-26讲:如何大幅成倍提升Redis处理性能?

主线程 Redis 自问世以来&#xff0c;广受好评&#xff0c;应用广泛。但相比&#xff0c; Memcached 单实例压测 TPS 可以高达百万&#xff0c;线上可以稳定跑 20~40 万而言&#xff0c;Redis 的单实例压测 TPS 不过 10~12 万&#xff0c;线上一般最高也就 2~4 万&#xff0c;…

【算法沉淀】最长回文子串

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《数据结构与算法&#xff1a;初学者入门指南》&#x1f4d8;&am…

element-ui 中 upload组件 如何传递额外的参数 ?

参考elementui 文档 如何通过data 进行额外传递参数&#xff1f;(:data"uploadData") <el-uploadref"fileUploadBtn1"class"upload-demo"accept".xls,.xlsx" :limit"1" :action"uploadFileUrl" :on-success&q…

MongoDB聚合运算符;$dateToParts

$dateToParts聚合运算符将日期表达式拆分成多个字段放在一个文档返回&#xff0c;属性有year、month、day、hour、minute、second和millisecond。如果iso8601属性设置为true&#xff0c;返回的各部分用ISO周日期返回&#xff0c;属性分别是&#xff1a;isoWeekYear、isoWeek、i…

jvm堆概述

《java虚拟机规范》中对java堆的描述是&#xff1a;所有的对象实例以及数组都应当在运行时分配在堆上。 一个JVM实例只存在一个堆内存(就是new 出来一个对象)&#xff0c;java内存管理的核心区域 java堆区在jvm启动的时候就被创建&#xff0c;空间大小确定。是jvm管理的最大一…

通过Step Back提示增强LLM的推理能力

原文地址&#xff1a;enhancing-llms-reasoning-with-step-back-prompting 论文地址&#xff1a;https://arxiv.org/pdf/2310.06117.pdf 2023 年 11 月 6 日 Introduction 在大型语言模型不断发展的领域中&#xff0c;一个持续的挑战是它们处理复杂任务的能力&#xff0c;这…

图形库实战丨C语言扫雷小游戏(超2w字,附图片素材)

目录 效果展示 游玩链接&#xff08;无需安装图形库及VS&#xff09; 开发环境及准备 1.VS2022版本 2.图形库 游戏初始化 1.头文件 2.创建窗口 3.主函数框架 开始界面函数 1.初始化 1-1.设置背景颜色及字体 1-2.处理背景音乐及图片素材 1-3.处理背景图位置 2.选…

【操作系统学习笔记】文件管理2.1

【操作系统学习笔记】文件管理2.1 参考书籍: 王道考研 视频地址: Bilibili 文件系统的层次结构 用户/应用程序用户接口: 文件系统需要向上层的用户提供一些简单易用的功能接口。这层就是用于处理用户发出的系统调用请求文件目录系统: 用户是通过文件路径来访问文件的&#x…

在职场上,如何提升影响力

在职场上提升影响力是一个持续且多方面的过程&#xff0c;涉及个人技能、人际关系、领导能力以及个人品牌的建立等多个方面。以下是一些建议&#xff0c;帮助你提升在职场上的影响力&#xff1a; 提升专业技能&#xff1a; 深入学习和掌握所在领域的专业知识&#xff0c;保持对…