1. 题目

给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。

示例:
输入: "sea", "eat"
输出: 2
解释: 第一步将"sea"变为"ea",第二步将"eat"变为"ea"提示:
给定单词的长度不超过500。
给定单词中的字符只含有小写字母。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/delete-operation-for-two-strings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目:
LeetCode 72. 编辑距离(DP)
LeetCode 712. 两个字符串的最小ASCII删除和(DP,类似编辑距离)
LeetCode 1143. 最长公共子序列(动态规划)

class Solution {public:int minDistance(string word1, string word2) {int n1 = word1.size(), n2 = word2.size(), i, j;if(n1==0 || n2==0)return max(n1,n2);vector<vector<int>> dp(n1+1,vector<int>(n2+1,INT_MAX));for(i = 0; i <= n1; ++i)dp[i][0] = i;//第二字符串长度为0,需要删除第一个字符串多少个字符for(i = 0; i <= n2; ++i)dp[0][i] = i;for(i = 1; i <= n1; ++i){for(j = 1; j <= n2; ++j){if(word1[i-1]==word2[j-1])//w1第i个字符和 w2第j个字符相等dp[i][j] = dp[i-1][j-1];//需要删除的最少字符等于前面的else{dp[i][j] = 1+min(dp[i][j-1],dp[i-1][j]);//不相等//可以有两种方式,删除一个 j,然后次数+1,dp[i][j-1]+1//或者删除一个 i,次数+1,dp[i-1][j]+1//其实还有一个删除i,j,次数+2,dp[i-1][j-1]+2,不可能次数最少}}}return dp[n1][n2];}
};

40 ms 12.1 MB

LeetCode 583. 两个字符串的删除操作(动态规划)相关推荐

  1. 124. Leetcode 583. 两个字符串的删除操作 (动态规划- 字符串系列)

    步骤一.确定状态: 确定dp数组及下标含义 dp[i][j]表示的是word1[:i]和word2[:j]相同所需要的最小步数. 步骤二.推断状态方程: 确定动态转移方程,依然是分相等和不相等. wo ...

  2. Leetcode 583.两个字符串的删除操作

    两个字符串的删除操作 给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符. 示例 1: 输入: "se ...

  3. LeetCode 583 两个字符串的删除操作

    思路: 最小操作步数=word1.size+word2.size-2*最长公共子序列长度 (删除word1,word2中的字符只保留它们两个最长公共子序列) 问题转化为求两个字符串的最长公共子序列 动 ...

  4. 583. 两个字符串的删除操作

    583. 两个字符串的删除操作 给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符. 示例: 输入: " ...

  5. 代码随想录算法训练营Day56动态规划:583.两个字符串的删除操作,72.编辑距离

    583.两个字符串的删除操作 文章链接:代码随想录 (programmercarl.com) 思路:动规五步曲 (1)确定dp数组及其含义 dp[i][j]表示字符串1在区间[0, i - 1]和字符 ...

  6. 代码随想录算法训练营第五十六天-动态规划16|● 583. 两个字符串的删除操作 ● 72. 编辑距离 ● 编辑距离总结篇

    一.583. 两个字符串的删除操作 给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符. 示例: 输入: &qu ...

  7. 583. 两个字符串的删除操作(JavaScript)

    //找不连续的最长公共子序列 var minDistance = function(w1, w2) {let len1=w1.lengthlet len2=w2.lengthlet dp=new Ar ...

  8. leetcode 583. Delete Operation for Two Strings | 583. 两个字符串的删除操作(最长公共子序列,DP)

    题目 https://leetcode.com/problems/delete-operation-for-two-strings/ 题解 本题实质上是个最长公共子序列问题,又是经典的 递归-> ...

  9. 583. 两个字符串的删除操作用时6ms的另类解法

    开门见山 看见这道题,我的第一反应不是去找出符合这道题的动态规划递推公式,我反而认为可以借用一下1143. 最长公共子序列的题解 class Solution {public int longestC ...

最新文章

  1. 【FFmpeg】使用过的命令汇总(持续更新中...)
  2. [云炬创业基础笔记]第七章创业资源测试3
  3. ArrayBlockingQueue原理分析-put方法
  4. java设计模式之设计原则②依赖倒置原则
  5. 武汉城市职业学院计算机分数线,武汉城市职业学院历年分数线 2021武汉城市职业学院录取分数线...
  6. mysql表设计很多非常大的varchar_聊一聊数据库(MySQL)设计中的数据类型优化
  7. LeetCode946-验证栈序列
  8. ldo和dcdc功耗_深度解析DCDC和LDO各自的原理和区别
  9. 查看zk状态时报错“Error contacting service. It is probably not running
  10. asp获取计算机mac,ASP获取客户端MAC地址(源代码)
  11. poj3204Ikki's Story I - Road Reconstruction(最大流求割边)
  12. 2021-08-21 mvc架构
  13. max(tm)财务进销存管理系统1.3.3.2mysql网络版_Max(TM)财务进销存管理系统
  14. 2016年最新苹果开发者账号注册申请流程最强详解!
  15. matlab正弦信号频谱,正弦信号的正弦信号的频谱分析及提取.doc
  16. 华为各类工程师通信基础面试题目及答案
  17. PCIE设备如何降速降带宽
  18. mico3165嵌入式开发板IAR环境搭建以及Demo运行
  19. 选择 Delphi 2007 ( CodeGear Delphi 2007 for Win32 Version 11.0.2837.9583 ) 的理由
  20. Android音频简介

热门文章

  1. css的属性是变量是怎么表达,CSS自定义属性(变量)
  2. Dev C++安装第三方库boost
  3. 织梦文章添加字段填栏目id,内容页调用字段里的栏目文章
  4. 17-9--18:了解Linux的命令格式,今天复习的已知命令和新命令
  5. docker发布spring cloud应用
  6. easyUI文本框textbox笔记
  7. Laravel框架开发规范-修订版
  8. java——IO流整理(一)
  9. struct task_struct 结构分析 \linux-1.0\linux\include\linux\sched.h
  10. 在X32与X64下,每种数据类型占用的字节数