这道题的思路:我是根据最长公共子序列的思路得来的。

最长公共子序列是: d[i][j]表示字符串s1前i个(0~i-1)字符,和字符串s2前j个(0~j-1)字符的最长公共子序列。

分情况讨论:

  当s1[i-1] == s2[j-1]的时候,d[i][j] = d[i-1][j-1]+1; 这个表示 ,当第i-1个字符相同时,就在之前d[i-1][j-1]的长度上加一

当s1[i-1] != s2[j-1]的时候,d[i][j] 的值就有可能有两种情况:

(1)d[i][j] = d[i-1][j],表示d[i][j]这个最长公共子序列,没有字符串s1[i-1]。那么就是相当于字符串s1(0~i-2)和字符串s2(0~j-1)的最长公共子序列

(2)d[i][j] = d[i][j-1],  表示d[i][j]这个最长公共子序列,没有字符串s2[i-1]。那么就是相当于字符串s1(0~i-1)和字符串s2(0~j-2)的最长公共子序列

综上,d[i][j] = max(d[i-1][j],d[i][j-1])

根据上面的这种思路,思考712这道题,这道题的意思是,删除字符,使得两个字符串相等,删除的字符相加起来,使得删除字符串的和最小。

可以设 d[i][i] 表示字符串s1前i个(0~i-1)字符和字符串s2前j个(0~j-1)字符保持相等的删除字符最小和

那么对于d[i][j] 也是分情况讨论:

当s1[i-1] ==s2[j-1] , 这就表示不需要删除s1[i-1]和s2[j-1],则d[i][j] = d[i-1][j-1]

当s1[i-1]!=s2[j-1],  两个字符都不要 ,则d[i][j] = d[i-1][j-1]+s1[i-1]+s2[j-1]

再讨论,无论s1[i-1]和s2[j-1]是否相等,

(1)不要s1[i-1],在s1[0~i-2]和 s2[0~j-1]中找删除字符串最小和

(2)不要s2[j-1], 在s1[0~i-1]和s2[0~j-2]中找删除字符串最小和

代码如下:

class Solution {
public:
int minimumDeleteSum(string s1, string s2) {
int m = s1.length();
int n =s2.length();
int d[m+][n+];
d[][] = ;
for(int i =;i<=m;i++)
d[i][] = d[i-][]+s1[i-];
for(int j =;j<=n;j++)
d[][j] = d[][j-]+s2[j-];
for(int i=;i<=m;i++)
for(int j=;j<=n;j++)
{
d[i][j] = min(d[i-][j]+s1[i-],d[i][j-]+s2[j-]);
if(s1[i-]==s2[j-])
d[i][j] = min(d[i][j],d[i-][j-]);
else
d[i][j] - min(d[i][j],d[i-][j-]+s1[i-]+s2[j-]);
}
return d[m][n];
}
};

leetcode 712的更多相关文章

  1. LN : leetcode 712 Minimum ASCII Delete Sum for Two Strings

    lc 712 Minimum ASCII Delete Sum for Two Strings 712 Minimum ASCII Delete Sum for Two Strings Given t ...

  2. [LeetCode] 712. Minimum ASCII Delete Sum for Two Strings 两个字符串的最小ASCII删除和

    Given two strings s1, s2, find the lowest ASCII sum of deleted characters to make two strings equal. ...

  3. Java实现 LeetCode 712 两个字符串的最小ASCII删除和(最长公共子串&&ASCII值最小)

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

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

    题目描述: https://leetcode-cn.com/problems/minimum-ascii-delete-sum-for-two-strings/ 解题思路: 也是典型的dp问题.利用二 ...

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

    Given two strings s1, s2, find the lowest ASCII sum of deleted characters to make two strings equal. ...

  6. [LeetCode] 583. Delete Operation for Two Strings 两个字符串的删除操作

    Given two words word1 and word2, find the minimum number of steps required to make word1 and word2 t ...

  7. Leetcode之动态规划(DP)专题-712. 两个字符串的最小ASCII删除和(Minimum ASCII Delete Sum for Two Strings)

    Leetcode之动态规划(DP)专题-712. 两个字符串的最小ASCII删除和(Minimum ASCII Delete Sum for Two Strings) 给定两个字符串s1, s2,找到 ...

  8. 【leetcode】712. Minimum ASCII Delete Sum for Two Strings

    题目如下: 解题思路:本题和[leetcode]583. Delete Operation for Two Strings 类似,区别在于word1[i] != word2[j]的时候,是删除word ...

  9. 【LeetCode】712. Minimum ASCII Delete Sum for Two Strings 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

随机推荐

  1. go语言学习 ---struct 对象的序列化和反序列化(xml)

    实例1: //main package main import ( "encoding/xml" "fmt" ) type person struct { Na ...

  2. SpringBoot 常用配置 静态资源访问配置/内置tomcat虚拟文件映射路径

    Springboot 再模板引擎中引入Js等文件,出现服务器拒绝访问的错误,需要配置过滤器 静态资源访问配置 @Configuration @EnableWebMvc public class Sta ...

  3. 不是所有OutOfMemoryError异常都跟内存有关

    一个老鸟遇到一个稀奇的问题后,如果只是想想,那么可能会失去一次丰富自己的机会. 如果从开始养成一个习惯,把所有难解决的问题都记录下来,面试的时候,也可能是给自己一次机会 *************** ...

  4. ESP8266 智能家居简单实现

    本文转自CSDN,地址 https://blog.csdn.net/jsagacity/article/details/78531819 全文如下 : 前段时间,公司利用 ESP8266 这个WiFi ...

  5. 定时任务 Quarzt

    Quartz.Net是一个从java版的Quartz移植过来的定时任务框架,可以实现异常灵活的定时任务. Quartz 有三个概念分别是 计划者(ISchedeler).工作(IJob).触发器(Tr ...

  6. JavaScript的深浅复制

    JavaScript的深浅复制 为什么有深复制.浅复制? JavaScript中有两种数据类型,基本数据类型如undefined.null.boolean.number.string,另一类是Obje ...

  7. 移动端vue2.5去哪儿项目-常见问题整理

    一.项目中遇到的问题.难点及解决方式 1. 移动端开发中的1px边框问题,由于在不同设备屏幕上,可能会使得1px实际在移动端显示不是1px,怎么解决? 2. 移动端click点击事件,会延迟300ms ...

  8. day28-python之property

    1.property用法 # class Goods: # def __init__(self): # # 原价 # self.original_price = 100 # # 折扣 # self.d ...

  9. UCOSII消息队列

    主结构体 typedef struct os_q { /* QUEUE CONTROL BLOCK */ struct os_q *OSQPtr; /* Link to next queue cont ...

  10. 老毛桃制作U盘-linux

    使用老毛桃制作ubuntu启动镜像 选择ISO模式 开始制作 模拟启动 制作完成,模拟启动测试.出现如下错误: Failed to load ldlinux.c32 Boot failed: plea ...