LeetCode 392 判断子序列
思路:动态规划
如果s长度>t长度,则返回假
否则求最长公共子序列,如果最长公共子序列长度为s的长度,返回真,否则为假
问题转化为求s,t的最长公共子序列
定义dp数组:
dp【i】【j】表示 s[ 0: i )和 t[ 0: j )最长公共子序列的长度
出口:
如果i或j为0,表示s,t至少有一个空串,dp[i][j]=0
状态转移方程:
如果s【i-1】=t【j-1】,dp[i][j]=dp【i-1】【j-1】+1
否则,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 392 判断子序列相关推荐
- leetcode - 392. 判断子序列
392. 判断子序列 -------------------------------------------- 给定字符串 s 和 t ,判断 s 是否为 t 的子序列. 你可以认为 s 和 t 中仅 ...
- LeetCode 392. 判断子序列(双指针二分查找)
1. 题目 给定字符串 s 和 t ,判断 s 是否为 t 的子序列. 你可以认为 s 和 t 中仅包含英文小写字母.字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 ...
- Leetcode 392.判断子序列
Time: 20190904 Type: Easy 题目描述 给定字符串 s 和 t ,判断 s 是否为 t 的子序列. 你可以认为 s 和 t 中仅包含英文小写字母.字符串 t 可能会很长(长度 ~ ...
- Leetcode 392. 判断子序列 (每日一题 20210929)
给定字符串 s 和 t ,判断 s 是否为 t 的子序列.字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串.(例如,"ace"是&q ...
- 118. Leetcode 392. 判断子序列 (动态规划-子序列问题)
步骤一.确定状态: 确定dp数组及下标含义 dp[i][j] 表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子 序列的长度为dp[i][j]. 步骤二.推断状态方程: 在确定递 ...
- Leetcode 392. 判断子序列 解题思路及C++实现
解题思路: 使用贪心算法,每在字符串t中找到s的相应顺序的一个字符,就当做找到了该字符,然后接着去找后面的字符. 程序大循环:在字符串 t 中去寻找字符串 s 的第一个字符. 每当找到 s 的起始字符 ...
- 【Leetcode -389.找不同 -392.判断子序列】
Leetcode Leetcode -389.找不同 Leetcode -392.判断子序列 Leetcode -389.找不同 题目:给定两个字符串 s 和 t ,它们只包含小写字母. 字符串 t ...
- python 判断子序列_LeetCode 392. 判断子序列 | Python
392. 判断子序列 题目 给定字符串 s 和 t ,判断 s 是否为 t 的子序列. 你可以认为 s 和 t 中仅包含英文小写字母.字符串 t 可能会很长(长度 ~= 500,000),而 s 是个 ...
- 392.判断子序列 | 792.匹配子序列的单词数
392. 判断子序列 labuladong 题解思路 给定字符串 s 和 t ,判断 s 是否为 t 的子序列. 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成 ...
最新文章
- 二分类变量相关性分析spss_spss:两个有序分类变量的相关分析『kendallstau-b相关系数』...
- 滴滴面试算法-----有序二维数组查找
- 聊一聊:请假不想说真实原因,你都怎么跟领导讲?
- mysql putty 备份_Linux下mysql数据库的备份-putty
- node.js 使用----相关常用命令总结
- 双十一期间快递员凌晨送件 将下班程序员误认成小偷
- '=='和equals区别以及jvm内存分配
- 解析对象体内与方法体内引用内部方法的不同
- springboot项目执行controller方法时进入慢的问题
- python异步调用exe等待_【Python】Async异步等待简单例子理解
- Android插件GsonFormat
- 电脑办公 等 无锡计算机培训,无锡锡山区电脑培训计算机培训office办公软件培训...
- XMPP即时通讯协议使用(前传)——协议详解
- Android资源代码 源码 整理 Github开源项目下载地址
- 搜狗浏览器异常问题 - 解决方案
- 实现了一个简单的以图搜图功能(带代码)
- linux mysql5.7免安装版配置_MySQL5.7免安装版配置
- MySQL学习总结(一)DB、DMBS、SQL的含义/MySQL语法规范
- 11月最值得关注的26个热点
- POI对word文档中的指定内容添加批注
热门文章
- 自己编译vim,解决Ubuntu 12.04 terminal里执行gvim会挂起的问题
- JSK-16016 单词排序【排序】
- JSK-61 二进制加法【大数】(废除!!!)
- HDU1276 士兵队列训练问题【模拟+array+vector+list】
- UVA10196 Check The Check【模拟+回溯】
- Bailian4071 查找出现了k次的字符【字符串】
- .condarc(conda 配置文件)、换国内源
- 生活的 tricks
- C Tricks(二)—— 按块访问二维数组
- Python 测试(一)—— doctest