【力扣】 两个字符串的最小ASCII删除和

一、题目描述

给定两个字符串s1 和 s2,返回使两个字符串相等所需删除字符的 ASCII 值的最小和 

示例 1:

输入: s1 = "sea", s2 = "eat"
输出: 231
解释: 在 "sea" 中删除 "s" 并将 "s" 的值(115)加入总和。
在 "eat" 中删除 "t" 并将 116 加入总和。
结束时,两个字符串相等,115 + 116 = 231 就是符合条件的最小和。

示例 2:

输入: s1 = "delete", s2 = "leet"
输出: 403
解释: 在 "delete" 中删除 "dee" 字符串变成 "let",
将 100[d]+101[e]+101[e] 加入总和。在 "leet" 中删除 "e" 将 101[e] 加入总和。
结束时,两个字符串都等于 "let",结果即为 100+101+101+101 = 403 。
如果改为将两个字符串转换为 "lee" 或 "eet",我们会得到 433 或 417 的结果,比答案更大。

提示:

  • 0 <= s1.length, s2.length <= 1000
  • s1 和 s2 由小写英文字母组成

二、解题思路(动态规划)

正难则反:求两个字符串的最小 ASCII 删除和, 其实就是找到两个字符串中所有的公共子序列里面, ASCII 最大和。
因此,我们的思路就是按照最长公共子序列的分析方式来分析。

关于最长公共子序列问题,可以参考下面博客:

【力扣】最长公共子序列-CSDN博客 

1、状态表示
dp[i][j] 表示: s1 [0, i] 区间以及 s2 [0, j] 区间内的所有的子序列中,公 共子序列的 ASCII 最大和
2、状态转移方程
对于 dp[i][j] 根据最后一个位置的元素,结合题目要求,分情况讨论:
(1)当 s1[i] == s2[j] 时应该先在 s1 的 [0, i - 1] 区间以及 s2 的 [0, j - 1] 区间内找一个公共子序列的 ASCII 最大和,然后在它们后面加上一个 s1[i] 字符即可。
此时 dp[i][j] = dp[i - 1][j - 1] + s1[i];
(2)当 s1[i] != s2[j] 时:公共子序列的ASCII最大和会有三种可能:
  • s1 [0, i - 1] 区间以及 s2 [0, j] 区间内:此时 dp[i][j] = dp[i - 1][j] ;
  • s1 [0, i] 区间以及 s2 [0, j - 1] 区间内:此时 dp[i][j] = dp[i][j - 1] ;
  • s1 [0, i - 1] 区间以及 s2 [0, j - 1] 区间内:此时 dp[i][j] = dp[i - 1][j - 1]
但是前两种情况里面包含了第三种情况,因此仅需考虑前两种情况下的最大值即可。
综上所述,状态转移方程为:
当 s1[i - 1] == s2[j - 1] 时, dp[i][j] = dp[i - 1][j - 1] + s1[i] ;
当 s1[i - 1] != s2[j - 1] 时, dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])
3、初始化
我们将原始 dp 表的规模多加上一行和一列,表示空串。 引入空串后,大大的方便了初始化。
但要 注意下标的映射关系 ,以及里面的值要保证后续填表是正确的。
当 s1 为空时,没有长度,同理 s2 也是。因此第一行和第一列里面的值初始化为 0,即可保证
后续填表是正确的。
4、填表顺序
从上往下填每一行,每一行从左往右。
5、返回值
(1)先找到 dp[m][n] ,也是最大公共 ASCII 和;(2)统计两个字符串的 ASCII 码和 sum; (3)返回 sum - 2 * dp[m][n]

三、代码

public int minimumDeleteSum(String s1, String s2) {int m = s1.length();int n = s2.length();int[][] dp = new int[m+1][n+1];for(int i = 1; i <= m; i++) {for(int j = 1; j <= n; j++) {if(s1.charAt(i-1) == s2.charAt(j-1)) {dp[i][j] = dp[i-1][j-1] + s1.charAt(i-1);}else {dp[i][j] = Math.max(dp[i][j-1], dp[i-1][j]);}}}int sum = 0;for(char ch : s1.toCharArray()) {sum += ch;}for(char ch : s2.toCharArray()) {sum += ch;}return sum - dp[m][n] - dp[m][n];}

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

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

相关文章

C# 绘图及古诗填字

绘图 绘图的结果如下&#xff1a; 绘图部分主要使用了 Bitmap、Graphics 具体的函数是 MakeMap 入参说明 string bg : 背景图 Rectangle rect &#xff1a;绘图区域 int row_count &#xff1a;行数 int col_count &#xff1a;列数 string fn &#xff1a;保存到的文件 …

Unity Standard shader 修改(增加本地坐标裁剪)

本想随便找一个裁剪的shader&#xff0c;可无奈的是没找到一个shader符合要求&#xff0c;美术制作的场景都是用的都标准的着色器他们不在乎你的功能逻辑需求&#xff0c;他们只关心场景的表现&#xff0c;那又找不到和unity标准着色器表现一样的shader 1.通过贴图的透明通道做…

【Java 百“练”成钢】Java 基础:类和对象

Java 基础&#xff1a;类和对象 01.打印信息02.打印类的简单名称03.打印类的 ClassLoader04.获取类的方法05.获取类的Package06.创建一个对象数组07.计算圆的面积08.计算圆的周长09.创建具有私有访问修饰符的成员10.创建带访问修饰符的成员11.将对象作为参数传递12.通过类对象获…

oracle开发中常用的sql语句

在Oracle数据库的开发过程中&#xff0c;SQL&#xff08;结构化查询语言&#xff09;是不可或缺的。无论是进行数据查询、数据插入、更新还是删除&#xff0c;都需要使用到SQL语句。以下是一些在Oracle开发中常用的SQL语句示例。 1. 数据查询&#xff08;SELECT&#xff09; …

基于axios给请求添加token

基于axios封装 创建js文件 import axios from "axios"; import { baseURL } from ../utils/config.js //请求的地址 if (process.env.NODE_ENV development) {baseURL; } else {baseURL; }//创建自定义axios对象 const instance axios.create({baseURL,timeo…

Java基础-一文一答系列

文章目录 Java 中应该使用什么数据类型来代表价格?怎么将 byte 转换为 StringJava 中怎样将 bytes 转换为 long 类型?Java 中 操作符是线程安全的吗?a a b 与 a b 的区别3 * 0.1 0.3 将会返回什么? true 还是 false?Int 和 Integer 哪个会占用更多的内存?为什么 Jav…

关于智慧校园建设的几点建议

随着科技的迅猛发展&#xff0c;智慧校园建设已成为现代教育的重要组成部分&#xff0c;对于提升教育质量、改善学生学习环境具有重要意义。为此&#xff0c;我提出以下几点建议&#xff0c;以帮助智慧校园建设更加有效和可持续。 首先&#xff0c;应注重基础设施建设。智慧校园…

Anaconda3 下载安装卸载

1、下载 官网链接&#xff1a;Download Now | Anaconda Step1&#xff1a;进入官网 Anaconda | The Operating System for AI Step2&#xff1a;进入下载页面&#xff0c;选择要Anaconda软件安装包 2、安装 Step1: 点击 Anaconda3-2024.02-1-Windows-x86_64.exe 安装包进行安…

线控转向 0 -- 线控转向介绍和专栏规划

一、线控转向介绍 高阶自动驾驶核心部件&#xff1a;英创汇智线控转向解决方案 _北京英创汇智科技有限公司 (trinova-tech.com) 线控转向的系统组成详细介绍大家可以看上面这个链接&#xff1b;我这里也只从里面截取一些图片&#xff0c;简单说明。 1、结构组成 线控转向分为…

数据交换平台_08_activatemq 如何集成其他系统或应用

如何集成其他系统或应用 目录概述需求:设计思路实现思路分析1. **使用ActiveMQ的JMS API**:2.使用ActiveMQ的REST API拓展实现参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a bette…

如何打造不一样的景区文旅VR体验馆项目?

近年来影院类产品迅速火爆&#xff0c;市面上的产品越来越多&#xff0c;投资者可以说是挑花了眼。为了助力投资者实现持续盈利&#xff0c;今天来给大家分析目前普乐蛙大爆新品悬空球幕飞行影院与其他5D/7D影院有哪些区别&#xff0c;给大家的创业投资之路避避雷~ 那我们正式开…

vue26:vue的环境搭建

vue环境安装配置 在点击上方链接前&#xff0c;注意&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 下方的红字&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&am…

计算机网络--应用层

计算机网络–计算机网络概念 计算机网络–物理层 计算机网络–数据链路层 计算机网络–网络层 计算机网络–传输层 计算机网络–应用层 1. 概述 因为不同的网络应用之间需要有一个确定的通信规则。 1.1 两种常用的网络应用模型 1.1.1 客户/服务器模型&#xff08;Client/Se…

【产品研发】NPDP价值作用概述

导读&#xff1a;本文结合个人实践和思考对NPDP的价值和作用做了概述说明&#xff0c;对于产品经理而言掌握NPDP的知识体系并且应用到实际工作中&#xff0c;这是非常有必要的。走出以往狭隘的产品研发工作认知&#xff0c;以开放心态学习国际化产品创新开发流程将极大提升产品…

【大学物理】期末复习双语笔记

3 vectors and scalar 20 damped harmonic motion,forced harmonic motion, superposition of SHM damped harmonic motion underdamped motion:欠阻尼 critical damped零界阻尼 over damped过阻尼 energy of damped harmonic motion application of damped oscillation:减震器…

5.组件间通信-$attrs(祖孙组件通信)

组件间通信-$attrs(祖孙组件通信) 父组件&#xff1a; <template><div class"father"><h3>父组件</h3><h4>a&#xff1a;{{a}}</h4><h4>b&#xff1a;{{b}}</h4><h4>c&#xff1a;{{c}}</h4><h4>…

链表翻转,写法和交换类似,但是需要pre cur 还有一个临时变量nxt记录下一个结点

递归反转单链表&#xff08;头插法反转部分链表 要弄pre cur 还有nxt&#xff08;临时变量保存下一个结点 P0指到需要修改的链表的前一个结点 class Solution {public ListNode reverseBetween(ListNode head, int left, int right) {ListNode dummynew ListNode(-1,head);L…

打造智慧校园信息系统,提升学校科技实力

在如今数字化的时代&#xff0c;打造智慧校园信息系统已成为提升学校科技实力的关键。随着科技的迅猛发展&#xff0c;学校需要跟上时代步伐&#xff0c;利用先进技术建设一个高效、智能的信息系统&#xff0c;为学生、教师和管理人员提供更好的学习和工作环境。 智慧校园信息系…

数字化那点事:一文读懂智慧城市

一、智慧城市的定义 一个城市信息化发展历程主要包括数字城市、信息城市、智慧城市、互联城市等阶段&#xff0c;现就我们当前所处的智慧城市阶段做个简要介绍。 智慧城市是利用先进的信息和通信技术&#xff08;ICT&#xff09;、物联网&#xff08;IoT&#xff09;、大数据分…

vue27:脚手架详细介绍main.js

在 Vue.js 中&#xff0c;render 函数是一个可选的选项&#xff0c;它允许你自定义组件的渲染逻辑。 如果你没有在 Vue 实例中提供 render 函数&#xff0c;Vue 将使用模板&#xff08;template&#xff09;来生成虚拟 DOM。 以下是render / template 两种方式的比较&#…