题目

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)相关推荐

  1. LeetCode 712. Minimum ASCII Delete Sum for Two Strings

    712.Minimum ASCII Delete Sum for Two Strings(两个字符串的最小ASCII删除和) 题目: 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的AS ...

  2. leetcode 583. Delete Operation for Two Strings | 583. 两个字符串的删除操作(最长公共子序列,DP)

    题目 https://leetcode.com/problems/delete-operation-for-two-strings/ 题解 本题实质上是个最长公共子序列问题,又是经典的 递归-> ...

  3. leetcode - 712. 两个字符串的最小ASCII删除和

    712. 两个字符串的最小ASCII删除和 -------------------------------------------- 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的AS ...

  4. LeetCode 712. 两个字符串的最小ASCII删除和

    LeetCode 712. 两个字符串的最小ASCII删除和 文章目录 LeetCode 712. 两个字符串的最小ASCII删除和 题目描述 一.解题关键词 二.解题报告 1.思路分析 2.时间复杂 ...

  5. LeetCode 712. 两个字符串的最小ASCII删除和(DP,类似编辑距离)

    1. 题目 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和. 示例 1: 输入: s1 = "sea", s2 = "eat" ...

  6. Leetcode 712.两个字符串的最小ASCII删除和

    Time: 20190906 Type: Medium 题目描述 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和. 示例 1: 输入: s1 = "sea ...

  7. leetcode712. 两个字符串的最小ASCII删除和(动态规划)-Gogo

    给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和. 示例 1: 输入: s1 = "sea", s2 = "eat" 输出: ...

  8. leetcode算法题--两个字符串的最小ASCII删除和★

    原题链接:https://leetcode-cn.com/problems/minimum-ascii-delete-sum-for-two-strings/ 相关题目:最长公共子序列 1.递归(超时 ...

  9. 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 问题,经典又熟悉. 暴力递归->傻 ...

最新文章

  1. Jmail的主要参数列表
  2. C#和JavaScript的简单互交
  3. jieba tfidf_【NLP】【三】jieba源码分析之关键字提取(TF-IDF/TextRank)
  4. python在哪下载-python在哪里下载
  5. sql语句查询数据库返回结果转换显示自定义字段
  6. React的生命周期(旧)
  7. 笑傲江湖客户端服务器地址修改,《笑傲江湖》改键调整操作手把手教你玩笑傲...
  8. 一个看似是系统问题的应用问题的解决过程
  9. 使用FileUpload组件上传文件
  10. 讨厌的任意门事件,删了会出系统提示:安装prosheild.msi问题,不要乱删!
  11. HTML+CSS大作业——中华美德文化(6页) HTML+CSS+JavaScript 中国传统美德文化网页HTML代码
  12. Linux内核kernel panic机制浅析
  13. 无法定位程序输入点?isPublicID@QXmlUtils@@SA_NAEVVQString@@@Z于动态链接库 D:\Qt\Qt5.7.0\5.7\msvc2015_64\bin\Qt5Cored
  14. 路由器连接上但上不了网如何操作
  15. 广告SDK平台中的CPA、CPS、CPM、CPT、CPC 是什么
  16. 77、基于STM32单片机的超市餐饮二维码/条形码摄像头识别结账扫码系统设计
  17. 这个七夕,送你一份程序员教科书级别的告白指南
  18. 简析中国电商直播行业发展现状
  19. 解锁 Elastic 最新的数据采集模块 - Ingest manager 和 Elastic Agent
  20. 什么是裸金属服务器,裸金属服务器适用什么场景?

热门文章

  1. 微型计算机技术及应用选择题,微机(微型计算机技术及应用)选择题及答案(最终版).docx...
  2. 2020已去,2021未来
  3. 梅州有学java的地方吗,梅州java工资水平,梅州java工资很高吗,梅州java工资底薪能到多少...
  4. 1_3 SingletonMode 单例模式
  5. Linux网络子系统
  6. 全世界最顶级的开发者都在使用什么数据库
  7. 再见,Navicat!这个IDEA的兄弟,真香!
  8. 如何创建一个Eureka Client?
  9. 音视频技术开发周刊 | 150
  10. 实时远程医学影像服务质量保障与网络优化