LeetCode 583 两个字符串的删除操作
思路:
最小操作步数=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 两个字符串的删除操作相关推荐
- Leetcode 583.两个字符串的删除操作
两个字符串的删除操作 给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符. 示例 1: 输入: "se ...
- LeetCode 583. 两个字符串的删除操作(动态规划)
1. 题目 给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符. 示例: 输入: "sea" ...
- 124. Leetcode 583. 两个字符串的删除操作 (动态规划- 字符串系列)
步骤一.确定状态: 确定dp数组及下标含义 dp[i][j]表示的是word1[:i]和word2[:j]相同所需要的最小步数. 步骤二.推断状态方程: 确定动态转移方程,依然是分相等和不相等. wo ...
- 583. 两个字符串的删除操作
583. 两个字符串的删除操作 给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符. 示例: 输入: " ...
- 代码随想录算法训练营Day56动态规划:583.两个字符串的删除操作,72.编辑距离
583.两个字符串的删除操作 文章链接:代码随想录 (programmercarl.com) 思路:动规五步曲 (1)确定dp数组及其含义 dp[i][j]表示字符串1在区间[0, i - 1]和字符 ...
- 代码随想录算法训练营第五十六天-动态规划16|● 583. 两个字符串的删除操作 ● 72. 编辑距离 ● 编辑距离总结篇
一.583. 两个字符串的删除操作 给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符. 示例: 输入: &qu ...
- 583. 两个字符串的删除操作(JavaScript)
//找不连续的最长公共子序列 var minDistance = function(w1, w2) {let len1=w1.lengthlet len2=w2.lengthlet dp=new Ar ...
- leetcode 583. Delete Operation for Two Strings | 583. 两个字符串的删除操作(最长公共子序列,DP)
题目 https://leetcode.com/problems/delete-operation-for-two-strings/ 题解 本题实质上是个最长公共子序列问题,又是经典的 递归-> ...
- 583. 两个字符串的删除操作用时6ms的另类解法
开门见山 看见这道题,我的第一反应不是去找出符合这道题的动态规划递推公式,我反而认为可以借用一下1143. 最长公共子序列的题解 class Solution {public int longestC ...
最新文章
- Rect 选择感兴趣区域
- 一篇文章让你彻底了解什么叫Netty!大牛看了直呼内行!
- node中的流的介绍(Stream)
- 正则表达式练习 Regex Golf
- UVa455 Periodic Strings(kmp)
- gridView里如何添加详情按钮,点击它可以转到另一页,以获取该行的详细信息。
- html2canvas导出地图,Leaflet OpenStreetMap使用html2canvas使用地图标记导出图像
- ant build.xml文件中能使用的属性介绍
- mysql导出数据库对象命令_mysql数据库导出数据(命令)
- 编译AVX代码,升级Redhat 5.5 GCC至4.7.1
- 【转】CentOS 使用yum命令安装出现错误提示”could not retrieve mirrorlist http://mirrorlist.centos.org ***”...
- SQL to ElasticSearch DSL改进
- GNS3交换机如何划分vlan
- 什么是敏感信息检测,敏感信息检测,安全视图 | 云效
- 真实力好口碑!Fortinet又双叒叕获评Gartner“客户之选”荣誉称号
- Kafka 核心原理(贼全面)
- vue实现仿网易云音乐客户端
- K2 BPM_【解决方案】从“制造”到“智造”,K2推动制造业转型升级_业务流程管理系统...
- 入耳式监控系统的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- pytorch LSTM的股价预测