leetcode 712. Minimum ASCII Delete Sum for Two Strings | 712. 两个字符串的最小ASCII删除和(暴力递归->傻缓存->DP)
题目
https://leetcode.com/problems/minimum-ascii-delete-sum-for-two-strings/
题解
经典的 暴力递归 -> 傻缓存 -> DP
实际上是找两个字符串的 最大ASCII码和 的公共子序列,然后用总的 ASCII 之和减一下就行了。可以参考两个字符串的最长公共子序列,只不过取 max 的依据不同,一个是 ASCII 码相加,一个是取长度。
class Solution {public int minimumDeleteSum(String s1, String s2) {int sum = 0;for (int i = 0; i < s1.length(); i++) {sum += s1.charAt(i);}for (int i = 0; i < s2.length(); i++) {sum += s2.charAt(i);}// Approach 1: Recursive, Brute Force
// return sum - process1(s1, s2, 0, 0);// Approach 2: Recursion with Memoization
// int[][] dp = new int[s1.length() + 1][s2.length() + 1];
// for (int i = 0; i < dp.length - 1; i++) {// for (int j = 0; j < dp[0].length - 1; j++) {// dp[i][j] = -1;
// }
// }
// return sum - process2(s1, s2, 0, 0, dp);// Approach 3: Dynamic Programmingint[][] dp = new int[s1.length() + 1][s2.length() + 1];for (int i = s1.length() - 1; i >= 0; i--) {for (int j = s2.length() - 1; j >= 0; j--) {int p1 = s1.charAt(i) == s2.charAt(j) ? dp[i + 1][j + 1] + s1.charAt(i) + s2.charAt(j) : 0;int p2 = dp[i + 1][j];int p3 = dp[i][j + 1];dp[i][j] = Math.max(p1, Math.max(p2, p3));}}return sum - dp[0][0];}// public int process2(String s1, String s2, int i, int j, int[][] dp) {// if (dp[i][j] >= 0) return dp[i][j];
// int p1 = s1.charAt(i) == s2.charAt(j) ? process2(s1, s2, i + 1, j + 1, dp) + s1.charAt(i) + s2.charAt(j) : 0;
// int p2 = process2(s1, s2, i + 1, j, dp);
// int p3 = process2(s1, s2, i, j + 1, dp);
// dp[i][j] = Math.max(p1, Math.max(p2, p3));
// return dp[i][j];
// }// public int process1(String s1, String s2, int i, int j) {// if (i == s1.length() || j == s2.length()) return 0;
// int p1 = s1.charAt(i) == s2.charAt(j) ? process1(s1, s2, i + 1, j + 1) + s1.charAt(i) + s2.charAt(j) : 0;
// int p2 = process1(s1, s2, i + 1, j);
// int p3 = process1(s1, s2, i, j + 1);
// return Math.max(p1, Math.max(p2, p3));
// }
}
leetcode 712. Minimum ASCII Delete Sum for Two Strings | 712. 两个字符串的最小ASCII删除和(暴力递归->傻缓存->DP)相关推荐
- LeetCode 712. Minimum ASCII Delete Sum for Two Strings
712.Minimum ASCII Delete Sum for Two Strings(两个字符串的最小ASCII删除和) 题目: 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的AS ...
- leetcode 583. Delete Operation for Two Strings | 583. 两个字符串的删除操作(最长公共子序列,DP)
题目 https://leetcode.com/problems/delete-operation-for-two-strings/ 题解 本题实质上是个最长公共子序列问题,又是经典的 递归-> ...
- leetcode - 712. 两个字符串的最小ASCII删除和
712. 两个字符串的最小ASCII删除和 -------------------------------------------- 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的AS ...
- LeetCode 712. 两个字符串的最小ASCII删除和
LeetCode 712. 两个字符串的最小ASCII删除和 文章目录 LeetCode 712. 两个字符串的最小ASCII删除和 题目描述 一.解题关键词 二.解题报告 1.思路分析 2.时间复杂 ...
- LeetCode 712. 两个字符串的最小ASCII删除和(DP,类似编辑距离)
1. 题目 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和. 示例 1: 输入: s1 = "sea", s2 = "eat" ...
- Leetcode 712.两个字符串的最小ASCII删除和
Time: 20190906 Type: Medium 题目描述 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和. 示例 1: 输入: s1 = "sea ...
- leetcode712. 两个字符串的最小ASCII删除和(动态规划)-Gogo
给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和. 示例 1: 输入: s1 = "sea", s2 = "eat" 输出: ...
- leetcode算法题--两个字符串的最小ASCII删除和★
原题链接:https://leetcode-cn.com/problems/minimum-ascii-delete-sum-for-two-strings/ 相关题目:最长公共子序列 1.递归(超时 ...
- leetcode 62, 63, 980. Unique Paths I, II, III | 62, 63, 980. 不同路径 I, II, III(暴力递归->傻缓存->动态规划)
62. Unique Paths https://leetcode.com/problems/unique-paths/ 注意本题只能向右 / 向上走. DP 问题,经典又熟悉. 暴力递归->傻 ...
最新文章
- Jmail的主要参数列表
- C#和JavaScript的简单互交
- jieba tfidf_【NLP】【三】jieba源码分析之关键字提取(TF-IDF/TextRank)
- python在哪下载-python在哪里下载
- sql语句查询数据库返回结果转换显示自定义字段
- React的生命周期(旧)
- 笑傲江湖客户端服务器地址修改,《笑傲江湖》改键调整操作手把手教你玩笑傲...
- 一个看似是系统问题的应用问题的解决过程
- 使用FileUpload组件上传文件
- 讨厌的任意门事件,删了会出系统提示:安装prosheild.msi问题,不要乱删!
- HTML+CSS大作业——中华美德文化(6页) HTML+CSS+JavaScript 中国传统美德文化网页HTML代码
- Linux内核kernel panic机制浅析
- 无法定位程序输入点?isPublicID@QXmlUtils@@SA_NAEVVQString@@@Z于动态链接库 D:\Qt\Qt5.7.0\5.7\msvc2015_64\bin\Qt5Cored
- 路由器连接上但上不了网如何操作
- 广告SDK平台中的CPA、CPS、CPM、CPT、CPC 是什么
- 77、基于STM32单片机的超市餐饮二维码/条形码摄像头识别结账扫码系统设计
- 这个七夕,送你一份程序员教科书级别的告白指南
- 简析中国电商直播行业发展现状
- 解锁 Elastic 最新的数据采集模块 - Ingest manager 和 Elastic Agent
- 什么是裸金属服务器,裸金属服务器适用什么场景?
热门文章
- 微型计算机技术及应用选择题,微机(微型计算机技术及应用)选择题及答案(最终版).docx...
- 2020已去,2021未来
- 梅州有学java的地方吗,梅州java工资水平,梅州java工资很高吗,梅州java工资底薪能到多少...
- 1_3 SingletonMode 单例模式
- Linux网络子系统
- 全世界最顶级的开发者都在使用什么数据库
- 再见,Navicat!这个IDEA的兄弟,真香!
- 如何创建一个Eureka Client?
- 音视频技术开发周刊 | 150
- 实时远程医学影像服务质量保障与网络优化