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
原创粉丝点击