Leetcode 712 Minimum ASCII Delete Sum for Two Strings
来源:互联网 发布:用js设置秒表 编辑:程序博客网 时间:2024/06/06 14:04
Leetcode 712 Minimum ASCII Delete Sum for Two Strings
Description
Given two strings s1, s2, find the lowest ASCII sum of deleted characters to make two strings equal.
Example 1:Input: s1 = "sea", s2 = "eat"Output: 231Explanation: Deleting "s" from "sea" adds the ASCII value of "s" (115) to the sum.Deleting "t" from "eat" adds 116 to the sum.At the end, both strings are equal, and 115 + 116 = 231 is the minimum sum possible to achieve this.
Example 2:Input: s1 = "delete", s2 = "leet"Output: 403Explanation: Deleting "dee" from "delete" to turn the string into "let",adds 100[d]+101[e]+101[e] to the sum. Deleting "e" from "leet" adds 101[e] to the sum.At the end, both strings are equal to "let", and the answer is 100+101+101+101 = 403.If instead we turned both strings into "lee" or "eet", we would get answers of 433 or 417, which are higher.
题解
题意很简单,给出两个字符串s1、s2,求要使他们变成一样的字符串所需要减去的字符的最小的ascii值的和。使用动态规划的方法,dp[i][j]表示字符串s[i:]和字符串s[j:]的最小差值和,状态转移方程为
if (s1[i] == s2[j]) { dp[i][j] = dp[i + 1][j + 1]; } else { dp[i][j] = min(dp[i + 1][j] + s1[i], dp[i][j + 1] + s2[j]); }
迭代以后输出dp[0][0]即最后结果,完整代码如下:
class Solution {public: int minimumDeleteSum(string s1, string s2) { // dp[i][j]表示从s1[i:]到s2[j:]的ascii差值 vector<vector<int>> dp(s1.size() + 1, vector<int>(s2.size() + 1, 0)); for (int i = s1.size() - 1; i >= 0; i--) dp[i][s2.size()] = dp[i + 1][s2.size()] + s1[i]; for (int i = s2.size() - 1; i >= 0; i--) dp[s1.size()][i] = dp[s1.size()][i + 1] + s2[i]; for (int i = s1.size() - 1; i >= 0; i--) { for (int j = s2.size() - 1; j >= 0; j--) { if (s1[i] == s2[j]) { dp[i][j] = dp[i + 1][j + 1]; } else { // 两种情况,删掉s1[i]或者删掉s2[j] dp[i][j] = min(dp[i + 1][j] + s1[i], dp[i][j + 1] + s2[j]); } } } return dp[0][0]; }};
阅读全文
0 0
- LeetCode#712 Minimum ASCII Delete Sum for Two Strings (week10)
- LeetCode #712 Minimum ASCII Delete Sum for Two Strings
- leetcode 712 Minimum ASCII Delete Sum for Two Strings
- Leetcode 712 Minimum ASCII Delete Sum for Two Strings
- leetcode 712 Minimum ASCII Delete Sum for Two Strings
- Leetcode 712. Minimum ASCII Delete Sum for Two Strings
- [leetcode] 712. Minimum ASCII Delete Sum for Two Strings
- [LeetCode] DP之 Minimum ASCII Delete Sum for two Strings
- Leetcode: 712. Minimum ASCII Delete Sum for Two Strings
- Leetcode Minimum ASCII Delete Sum for Two Strings
- Leetcode-Minimum ASCII Delete Sum for Two Strings
- LeetCode 712. Minimum ASCII Delete Sum for Two Strings [Medium]
- [LeetCode]712. Minimum ASCII Delete Sum for Two Strings
- LeetCode:Minimum ASCII Delete Sum for Two Strings
- Minimum ASCII Delete Sum for Two Strings
- Minimum ASCII Delete Sum for Two Strings
- 712[Medium]: Minimum ASCII Delete Sum for Two Strings
- 712 Minimum ASCII Delete Sum for Two Strings
- 【Scikit-Learn 中文文档】处理文本数据
- Scala Cookbook.pdf 英文原版 免费下载
- List Form表单常用功能
- Android——使用OkHttp(含各种请求方法)
- java数字转换
- Leetcode 712 Minimum ASCII Delete Sum for Two Strings
- 【NodeJS】回调和异步调用的关系
- SSL P2324 细胞问题
- MDK中STM32使用Printf函数详细解析
- 2017-12-8
- Living Clojure.pdf 英文原版 免费下载
- xml约束
- 洛谷P1199 三国游戏(博弈)
- Android移动开发-在Android项目里调用基于高德地图API实现定位