题目

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. docker三剑客之docker-machine
  2. Pin code码已被重置
  3. 科大讯飞 jason word_2019科大讯飞全球1024开发者节开幕啦
  4. java list 占用内存不释放_性能不打折,内存占用减少90%,Facebook提出极致模型压缩方法Quant-Noise...
  5. js获取display的值_JS实现多行溢出省略号思路
  6. 【毕业答辩】学位论文答辩ppt指南!
  7. Qt--自定义Delegate
  8. ubuntu 安装mono Fiddler后The proxy server is refusing connections
  9. IIS DNS服务器搭建
  10. 5V升压8.4V,5V转8.4芯片电路图
  11. LeetCode刷题:矩阵快速幂
  12. TkMybatis 是什么?
  13. EAN13商品条码数据如何居中显示
  14. 【Maya】移动、父子关系、轴心点、分组关系
  15. 谷歌的天敌竟然是亚马逊:从开放7-Mic阵列授权说起
  16. 网易的java微专业_网易微专业Java开发工程师(Web方向)
  17. CSS3 实现3D特效
  18. jekyll-paginate 缺失
  19. 【svn】如何批量忽略文件和文件夹
  20. Pads Logic 、AD转Orcad

热门文章

  1. CodeForces - 125C Hobbits' Party(思维+构造)
  2. SPOJ - COT Count on a tree(LCA+主席树+离散化)
  3. HDU - 4370 0 or 1(思维+最短路)
  4. 广度优先搜索生成树怎么画_图的深度优先遍历与广度优先遍历以及最小生成树...
  5. 正方形个数(二维点哈希)
  6. [SDWC2018 Day1]网格
  7. 视音频编解码学习工程:JPEG分析器
  8. cocos2d-x初探学习笔记(16)--LayerColor
  9. 手把手教你玩转ARP包(四)
  10. 探讨视频云与边缘云平台的竞争力 ——基于Serverless的端边云一体化媒体网络...