题目

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. zookeeper做集群后启动不了,大部分原因是防火墙未关闭
  2. 快速入门PyTorch(3)--训练一个图片分类器和多 GPUs 训练
  3. 前端笔记-Vue cli中使用axios后JavaScript变量传输给vue变量要注意的地方
  4. python界面-python 可视化界面
  5. 【Python 小白到精通 | 课程笔记】第三章:数据处理就像侦探游戏(函数和包)
  6. xu2w显示屏软件下载_LED BEST(LED显示屏控制软件) V2.8 官方版
  7. 计算机在模具设计中的应用课程设计,数字化技术在冲压模具设计与制造中的应用...
  8. hibernate、ibatis、freyja的价值
  9. js代码实现点击按钮出现60秒倒计时
  10. win101809最新专业版企业版激活密钥和功能
  11. 第4章 Stata参数检验
  12. Gvim高级操作001--对匹配关键字进行操作--数字运算结果替换
  13. UAP扩展开发 - 新增按钮
  14. 看《骇客帝国-重装上阵》说法语
  15. 43 岁硅谷技术大拿命丧街头,真凶落网:熟人作案,是 Expand IT 创始人
  16. iPhone开启的「查找」功能怎么操作
  17. JSON parse error: Invalid UTF-8 start byte 0xa0\n
  18. 设计模式学习(九):Builder
  19. MySQL数据库日志详解
  20. [物联网] - [STM32/51|JavaWeb|微信小程序] - 2.开发环境配置

热门文章

  1. CodeForces - 1373F Network Coverage(二分)
  2. UVA - 11806 Cheerleaders(组合数学+容斥原理)
  3. HDU - 2874 Connections between cities(并查集+LCA)
  4. java oss 批量传输_阿里云OSS对象存储,服务端签名后直传阿里云OSS
  5. VC6.0蕉HOOK_timeGetTime 达到变速效果
  6. 【Boost】boost库asio详解8——TCP的简单例子1
  7. VC网络通信API概览
  8. 接入 SDK 结果翻车了?了解 SDK 的那些事
  9. 大众点评app 数据解密和反序列化
  10. 第43讲:灵活好用的 Spider 的用法