Leetcode 712. 两个字符串的最小ASCII删除和
题目描述:
https://leetcode-cn.com/problems/minimum-ascii-delete-sum-for-two-strings/
解题思路:
也是典型的dp问题。利用二维dp数组求解。
建立一个二维数组Dp[ i ][ j ],Dp[ i ][ j ]表示从s1中拿出 i 个元素和从 s2 中拿出 j 个元素的最小删除数。
当s1[i]=s2[j]时,dp[i][j] = dp[i-1][j-1].
当s1[i]!=s2[j],
动态转移方程为:
dp[i][j] = min(dp[i-1][j]+s1[i], dp[i][j-1]+s2[j], dp[i-1][j-1]+s1[i]+s2[j]) 。
代码:
class Solution {
public:
    int minimumDeleteSum(string s1, string s2) {
        int len1 = s1.size();
        int len2 = s2.size();
        vector<vector<int>> dp(len1+, vector<int>(len2+, ));
        for(int i=; i<=len1; i++)
        {
            dp[i][] = dp[i-][] + s1[i-];
        }
        for(int i=; i<=len2; i++)
        {
            dp[][i] = dp[][i-] + s2[i-];
        }
        for(int i=; i<len1; i++)
        {
            for(int j=; j<len2; j++)
            {
                if(s1[i] == s2[j])
                    dp[i+][j+] = dp[i][j];
                else
                {
                    dp[i+][j+] = min(dp[i][j+]+s1[i], dp[i+][j]+s2[j]);
                    dp[i+][j+] = min(dp[i+][j+], dp[i][j]+s1[i]+s2[j]);
                }
            }
        }
        return dp[len1][len2];
    }
};
Leetcode 712. 两个字符串的最小ASCII删除和的更多相关文章
- Java实现 LeetCode 712 两个字符串的最小ASCII删除和(最长公共子串&&ASCII值最小)
		712. 两个字符串的最小ASCII删除和 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和. 示例 1: 输入: s1 = "sea", s2 ... 
- Leetcode之动态规划(DP)专题-712. 两个字符串的最小ASCII删除和(Minimum ASCII Delete Sum for Two Strings)
		Leetcode之动态规划(DP)专题-712. 两个字符串的最小ASCII删除和(Minimum ASCII Delete Sum for Two Strings) 给定两个字符串s1, s2,找到 ... 
- 【leet-code】712. 两个字符串的最小ASCII删除和
		题目描述 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和. 示例 1: 输入: s1 = "sea", s2 = "eat" ... 
- [LeetCode] 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. ... 
- [Swift]LeetCode712. 两个字符串的最小ASCII删除和 | 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. ... 
- Q712 两个字符串的最小ASCII删除和
		给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和. 示例 1: 输入: s1 = "sea", s2 = "eat" 输出: ... 
- [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. ... 
- 算法61---两个字符串的最小ASCII删除和【动态规划】
		一.题目: 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和. 示例 1: 输入: s1 = "sea", s2 = "eat" ... 
- LeetCode 599: 两个列表的最小索引总和   Minimum Index Sum of Two Lists
		题目: 假设 Andy 和 Doris 想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示. Suppose Andy and Doris want to cho ... 
随机推荐
- The resource configuration is not modifiable in this context.
			项目中使用了Jersey RESTful 框架, 更新代码后服务能正常起来, 在页面登录时验证码不显示 后台报错 java.lang.IllegalStateException: The resour ... 
- WPF之托盘图标的设定
			首先需要在项目中引用System.Windows.Forms,System.Drawing; using System; using System.Collections.Generic; using ... 
- Django之views
			一 URL补充 二 Views试图函数 一 URL补充 1 MTV模型 2 django建立流程(用命令版) (1)django-admin startproject projectname (2) ... 
- nodejs-stream部分
			参考: https://blog.csdn.net/eeewwwddd/article/details/81042225 http://nodejs.cn/api/stream.html#stream ... 
- poi导出excel,表头数据动态拼装
			/* * 第一步:拼装表头和数据 */ // 放多个sheet的集合 List<Map<String,Object>> datas = new ArrayList<Map ... 
- Ubuntu sudo apt-get 安装下载更新软件包命令详解
			sudo apt-get install package 安装软件包sudo apt-get install package - - reinstall 重新安装 ... 
- 在模拟器上运行Android项目时报错:DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs
			今天在Android Studio自带的模拟器上运行项目的时候,出现如下所示Error:当点击ok后,发现模拟器不能运行程序. 解决办法: 更改Android Studio中的设置: File---& ... 
- Linux命令——head/tail
			一.head head主要是用来显示档案的开头至标准输出中,默认打印相应文件的开头10 行. 1)命令格式 head [参数] [文件] 2)常用参数 -q 隐藏文件名-v 显示文件名 ... 
- Tensorflow[架构流程]
			1. tensorflow工作流程 如官网所示: 根据整体架构或者代码功能可以分为: 图1.1 tensorflow架构 如图所示,一层C的api接口将底层的核运行时部分与顶层的多语言接口分离开. 而 ... 
- LVDS原理及设计指南--以及衍生的B-LVDS-M-LVDS--CML-LVPECL电平等
			LVDS是一种低摆幅的差分信号技术,它使得信号能在差分PCB 线对或平衡电缆上以几百Mbps的速率传输,其低压幅和低电流驱动输出实现了低噪声和低功耗. IEEE 在两个标准中对LVDS 信号 ... 
