力扣712. 两个字符串的最小ASCII删除和

动态规划

  • 思路:
    • 假设 dp[i][j] 是 s1 长度 i 和 s2 长度 j 两个字符串的最小 ASCII 删除和;
    • dp[i][j] 可以由:
      • 如果 s1 的第 i 个字符(s1[i - 1])和 s2 的第 j 个字符(s2[j - 1])不相等,则:
        • dp[i - 1][j] 加上删除 s1 的第 i 个字符,即dp[i][j] = dp[i - 1][j] + s1(i - 1);
        • dp[i][j - 1] 加上删除 s2 的第 j 个字符,即dp[i][j] = dp[i][j - 1] + s2(j - 1);
        • 取其中最小值即可;
      • 如果 s1 的第 i 个字符和 s2 的第 j 个字符相等,则:
        • dp[i][j] = dp[i - 1][j - 1]
    • 如果两个都是空串,删除和为0,即 dp[0][0] = 0
    • 如果有一个是空串,则删除和为另一个字符串所有字符的 ASCII 和:
      • dp[i][0] = dp[i - 1][0] + s1[i - 1]
      • dp[0][j] = dp[0][j - 1] + s2[j - 1]
class Solution {
public:int minimumDeleteSum(string s1, string s2) {int m = s1.size();int n = s2.size();std::vector<std::vector<int>> dp(m + 1, std::vector<int>(n + 1));dp[0][0] = 0;for (int i = 1; i < m + 1; ++i) {dp[i][0] = dp[i - 1][0] + s1[i - 1];}for (int j = 1; j < n + 1; ++j) {dp[0][j] = dp[0][j - 1] + s2[j - 1];}for (int i = 1; i < m + 1; ++i) {for (int j = 1; j < n + 1; ++j) {if (s1[i - 1] == s2[j - 1]) {dp[i][j] = dp[i - 1][j - 1];} else {dp[i][j] = std::min(dp[i - 1][j] + s1[i - 1], dp[i][j - 1] + s2[j - 1]);}}}return dp[m][n];}
};

———————————————————————————————————————

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

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

相关文章

day27 回溯算法part3

39. 组合总和 中等 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限…

云表企业级无代码案例-10天做出《运输车辆管理系统》

物流运输行业像物流公司、运输车队、出租客运公司等企业在车辆管理方面&#xff0c;因其行业特点而面临很多管理上难题&#xff1a; 一、管理的对象多&#xff1a;车辆多&#xff0c;如果有三方车辆挂靠&#xff0c;还要涉及到车主管理&#xff0c;关系错综复杂。 二、管理的信…

利用Knife4j注解实现Java生成接口文档

文章目录 1、简介2、生成文档3、系列注解3.1、Api3.2、ApiResponses和ApiResponse3.3、ApiOperation3.4、Pathyvariable⭐3.5、RequestBody3.6、ApiOperationSupport3.7、ApiImplicitParams 和 ApiImplicitParam3.8、ApiModel3.9、ApiModelProperty ​&#x1f343;作者介绍&am…

202412读书笔记|《做自己的花》——走自己的路,成为自己的星星

202412读书笔记|《做自己的花》——走自己的路&#xff0c;成为自己的星星 《做自己的花&#xff08;微信读书联合出品&#xff09;》作者月芽&#xff0c;一个用画画和诗讲故事的插画师、诗人。 画风治愈&#xff0c;故事感强&#xff0c;擅长在童话般的故事中描绘现实温暖的心…

MySQL 覆盖索引

目录 一、什么是索引 二、索引的有哪些种类&#xff1f; 三、InnoDB的不同的索引组织结构是怎样的呢&#xff1f; 四、什么是覆盖索引 五、如何使用是覆盖索引&#xff1f; 六、如何确定数据库成功使用了覆盖索引呢 总结&#xff1a; 一、什么是索引 索引&#xff08;在 …

C++ Qt开发:运用QJSON模块解析数据

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍如何运用QJson组件的实现对JSON文本的灵活解析…

Vulnhub靶机:Pwn the Tron

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;Pwn the Tron&#xff08;10.0.2.40&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vulnhub.com/entry/…

【如何轻松拿捏LIO-SAM?】今天终于来啦!!

中科院保研硕士教你如何轻松拿捏LIO-SAM&#xff0c;不仅会对LIO-SAM的论文原理和代码进行详细讲解&#xff0c;也会对SLAM中的数学知识、LOAM、LeGO-LOAM的论文原理及代码进行详细讲解&#xff0c;2024年1月28日开始更新啦&#xff01;之后每周日晚20:00更新一章&#xff0c;欢…

Windows Server 2003 Web服务器搭建

系列文章目录 目录 系列文章目录 前言 一、Web服务器是什么&#xff1f; 二、配置服务器 1.实验环境搭建 2.服务器搭建 1)控制面板中找到增加或删除程序打开 2)点击增加程序 3)安装Web服务器 4)查看安装是否成功 5)打开Internet信息服务(IIS)管理器,进行配置 6)找…

Codeforces Round 785 C. Palindrome Basis

C. Palindrome Basis 题意 定义一个正整数 a a a 是回文的&#xff08;没有前导 0 0 0&#xff09;当且仅当&#xff1a; a a a 的十进制表示形式回文 给定一个正整数 n n n &#xff0c;求出将 n n n 拆分成若干个回文数之和的方案数 思路 这是一个经典模型&#xff0…

简单、在线、实时的多目标跟踪实现(C++)

文章目录 依赖建立镜像运行demo下载数据创建简单的数据链接在镜像中编译和运行代码代码依赖 Ubuntu 16.04Docker 18.09.4OpenCV 3.4.2Boost 1.58.0建立镜像 cd /path/to/sort-cpp docker build -t sort . ./docker_run.sh运行demo

路由进阶

文章目录 1.路由的封装抽离2.声明式导航 - 导航链接3.声明式导航-两个类名自定义匹配的类名 4.声明式导航 - 跳转传参查询参数传参动态路传参两种传参方式的区别动态路由参数可选符 5.Vue路由 - 重定向6.Vue路由 - 4047.Vue路由 - 模式设置8.编程式导航 - 两种路由跳转9.编程式…