思路:

最小操作步数=word1.size+word2.size-2*最长公共子序列长度

(删除word1,word2中的字符只保留它们两个最长公共子序列)

问题转化为求两个字符串的最长公共子序列

动态规划

定义dp数组: dp【i】【j】表示word1【0:i),word2【0:j)最长公共子序列

出口:              i=0 或者 j=0,至少有一个字符串为空,所以,dp[i][j]=0

状态转移方程:

word1[i]==word2[j],     dp[i][j]=dp[i-1][j-1]+1

word1[i]!=word2[j],       dp[i][j]=max(  dp[i-1][j],    dp[i][j-1])

代码:

class Solution {
public:int minDistance(string word1, string word2) {
vector<vector<int>>dp(word1.size()+1,vector<int>(word2.size()+1));
for(int i=0;i<=word1.size();i++)
{dp[i][0]=0;
}
for(int j=0;j<=word2.size();j++)
{dp[0][j]=0;
}
for(int i=1;i<=word1.size();i++)
{for(int j=1;j<=word2.size();j++){if(word1[i-1]==word2[j-1])dp[i][j]=dp[i-1][j-1]+1;else{dp[i][j]=max(dp[i-1][j],dp[i][j-1]);}}
}
return word1.size()+word2.size()-2*dp[word1.size()][word2.size()];}
};

LeetCode 583 两个字符串的删除操作相关推荐

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

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

  2. LeetCode 583. 两个字符串的删除操作(动态规划)

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

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

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

  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. Rect 选择感兴趣区域
  2. 一篇文章让你彻底了解什么叫Netty!大牛看了直呼内行!
  3. node中的流的介绍(Stream)
  4. 正则表达式练习 Regex Golf
  5. UVa455 Periodic Strings(kmp)
  6. gridView里如何添加详情按钮,点击它可以转到另一页,以获取该行的详细信息。
  7. html2canvas导出地图,Leaflet OpenStreetMap使用html2canvas使用地图标记导出图像
  8. ant build.xml文件中能使用的属性介绍
  9. mysql导出数据库对象命令_mysql数据库导出数据(命令)
  10. 编译AVX代码,升级Redhat 5.5 GCC至4.7.1
  11. 【转】CentOS 使用yum命令安装出现错误提示”could not retrieve mirrorlist http://mirrorlist.centos.org ***”...
  12. SQL to ElasticSearch DSL改进
  13. GNS3交换机如何划分vlan
  14. 什么是敏感信息检测,敏感信息检测,安全视图 | 云效
  15. 真实力好口碑!Fortinet又双叒叕获评Gartner“客户之选”荣誉称号
  16. Kafka 核心原理(贼全面)
  17. vue实现仿网易云音乐客户端
  18. K2 BPM_【解决方案】从“制造”到“智造”,K2推动制造业转型升级_业务流程管理系统...
  19. 入耳式监控系统的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  20. pytorch LSTM的股价预测

热门文章

  1. POJ-1191 棋盘分割 动态规划
  2. libsvm 的使用
  3. matlab 快捷键
  4. Tricks(四十二)—— 数据集分块
  5. 机器学习基础(十二)—— 数学基本理论拾遗
  6. 算法直观与对模型的理解(二)
  7. 产生一定范围随机数的通用表达式
  8. java x1价格_java I/O总结
  9. mysql update 并发 慢_详解Mysql的锁机制
  10. 从零开始学习python编程-和尧名大叔一起从0开始学Python编程-循环