当前位置: 首页 > news >正文

购买设备有什么网站做参考网络服务投诉平台

购买设备有什么网站做参考,网络服务投诉平台,网站名称是网址吗,中国工商注册网企业年报系统392.判断子序列 题目要求:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是…

392.判断子序列

题目要求:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。

字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。

示例 1:

  • 输入:s = "abc", t = "ahbgdc"
  • 输出:true

示例 2:

  • 输入:s = "axc", t = "ahbgdc"
  • 输出:false

思路

直觉上和昨天的题目很像,判断s是否是t的子序列。

dp[i][j] 表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度为dp[i][j]

确定递推公式:

if (s[i - 1] == t[j - 1]),那么dp[i][j] = dp[i - 1][j - 1] + 1;,因为找到了一个相同的字符,相同子序列长度自然要在dp[i-1][j-1]的基础上加1(如果不理解,在回看一下dp[i][j]的定义

if (s[i - 1] != t[j - 1]),此时相当于t要删除元素,t如果把当前元素t[j - 1]删除,那么dp[i][j] 的数值就是 看s[i - 1]与 t[j - 2]的比较结果了,即:dp[i][j] = dp[i][j - 1];

从递推公式可以看出dp[i][j]都是依赖于dp[i - 1][j - 1] 和 dp[i][j - 1],所以dp[0][0]和dp[i][0]是一定要初始化的。

这里大家已经可以发现,在定义dp[i][j]含义的时候为什么要表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度为dp[i][j]

因为这样的定义在dp二维矩阵中可以留出初始化的区间,如图:

class Solution {
public:bool isSubsequence(string s, string t) {vector<vector<int>> dp(s.size() + 1, vector<int>(t.size() + 1, 0));for (int i = 1; i <= s.size(); ++i) {for (int j = 1; j <= t.size(); ++j) {if (s[i-1] == t[j-1]) dp[i][j] = dp[i-1][j-1] + 1;else dp[i][j] = dp[i][j-1];}}return dp[s.size()][t.size()] == s.size();}
};

 115.不同的子序列

题目要求:给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。

字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是)

题目数据保证答案符合 32 位带符号整数范围。

思路 

这道题目如果不是子序列,而是要求连续序列的,那就可以考虑用KMP。

dp[i][j]:以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j]。

这一类问题,基本是要分析两种情况

  • s[i - 1] 与 t[j - 1]相等
  • s[i - 1] 与 t[j - 1] 不相等

当s[i - 1] 与 t[j - 1]相等时,dp[i][j]可以有两部分组成。

一部分是用s[i - 1]来匹配,那么个数为dp[i - 1][j - 1]。即不需要考虑当前s子串和t子串的最后一位字母,所以只需要 dp[i-1][j-1]。

一部分是不用s[i - 1]来匹配,个数为dp[i - 1][j]。

这里可能有录友不明白了,为什么还要考虑 不用s[i - 1]来匹配,都相同了指定要匹配啊

例如: s:bagg 和 t:bag ,s[3] 和 t[2]是相同的,但是字符串s也可以不用s[3]来匹配,即用s[0]s[1]s[2]组成的bag。

当然也可以用s[3]来匹配,即:s[0]s[1]s[3]组成的bag。

所以当s[i - 1] 与 t[j - 1]相等时,dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];

当s[i - 1] 与 t[j - 1]不相等时,dp[i][j]只有一部分组成,不用s[i - 1]来匹配(就是模拟在s中删除这个元素),即:dp[i - 1][j]

所以递推公式为:dp[i][j] = dp[i - 1][j];

这里可能有录友还疑惑,为什么只考虑 “不用s[i - 1]来匹配” 这种情况, 不考虑 “不用t[j - 1]来匹配” 的情况呢。

这里大家要明确,我们求的是 s 中有多少个 t,而不是 求t中有多少个s,所以只考虑 s中删除元素的情况,即 不用s[i - 1]来匹配 的情况。

从递推公式dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]; 和 dp[i][j] = dp[i - 1][j]; 中可以看出dp[i][j] 是从上方和左上方推导而来,如图:,那么 dp[i][0] 和dp[0][j]是一定要初始化的。

每次当初始化的时候,都要回顾一下dp[i][j]的定义,不要凭感觉初始化。

dp[i][j]:以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j]。

dp[i][0]表示什么呢?

dp[i][0] 表示:以i-1为结尾的s可以随便删除元素,出现空字符串的个数。

那么dp[i][0]一定都是1,因为也就是把以i-1为结尾的s,删除所有元素,出现空字符串的个数就是1。

再来看dp[0][j],dp[0][j]:空字符串s可以随便删除元素,出现以j-1为结尾的字符串t的个数。

那么dp[0][j]一定都是0,s如论如何也变成不了t。

最后就要看一个特殊位置了,即:dp[0][0] 应该是多少。

dp[0][0]应该是1,空字符串s,可以删除0个元素,变成空字符串t。

vector<vector<long long>> dp(s.size() + 1, vector<long long>(t.size() + 1));
for (int i = 0; i <= s.size(); i++) dp[i][0] = 1;
for (int j = 1; j <= t.size(); j++) dp[0][j] = 0; // 其实这行代码可以和dp数组初始化的时候放在一起,但我为了凸显初始化的逻辑,所以还是加上了。
class Solution {
public:int numDistinct(string s, string t) {vector<vector<uint64_t>> dp(s.size() + 1, vector<uint64_t>(t.size() + 1, 0));for (int i = 0; i < s.size(); ++i) dp[i][0] = 1;for (int i = 1; i <= s.size(); ++i) {for (int j = 1; j <= t.size(); ++j) {if (s[i-1] == t[j-1]) dp[i][j] = dp[i-1][j] + dp[i-1][j-1];else dp[i][j] = dp[i-1][j];}}return dp[s.size()][t.size()];}
};

递归推导过程有点绕,不好理解。而且产生dp的想法很重要,重要的是dp[i][j]代表什么。

  • 时间复杂度: O(n * m)
  • 空间复杂度: O(n * m)

文章转载自:
http://hypocoristic.tzmc.cn
http://epicurism.tzmc.cn
http://catholically.tzmc.cn
http://chanfron.tzmc.cn
http://delict.tzmc.cn
http://subdiscipline.tzmc.cn
http://scenic.tzmc.cn
http://bobbin.tzmc.cn
http://nidify.tzmc.cn
http://discomposure.tzmc.cn
http://obiit.tzmc.cn
http://hexapodous.tzmc.cn
http://shellback.tzmc.cn
http://broking.tzmc.cn
http://trimness.tzmc.cn
http://blooey.tzmc.cn
http://topographical.tzmc.cn
http://trihedron.tzmc.cn
http://chromic.tzmc.cn
http://liquate.tzmc.cn
http://dominance.tzmc.cn
http://anuran.tzmc.cn
http://zinky.tzmc.cn
http://underbush.tzmc.cn
http://nondirectional.tzmc.cn
http://hangbird.tzmc.cn
http://extubate.tzmc.cn
http://bhc.tzmc.cn
http://feeble.tzmc.cn
http://homoeothermic.tzmc.cn
http://peteman.tzmc.cn
http://seismology.tzmc.cn
http://mycotrophy.tzmc.cn
http://pulpy.tzmc.cn
http://blagoveshchensk.tzmc.cn
http://converter.tzmc.cn
http://rhythmless.tzmc.cn
http://corbie.tzmc.cn
http://discomfiture.tzmc.cn
http://archeology.tzmc.cn
http://decimalise.tzmc.cn
http://androgenous.tzmc.cn
http://rajput.tzmc.cn
http://dumbartonshire.tzmc.cn
http://fanged.tzmc.cn
http://oceanologist.tzmc.cn
http://marcobrunner.tzmc.cn
http://meanly.tzmc.cn
http://blowby.tzmc.cn
http://franking.tzmc.cn
http://ionogram.tzmc.cn
http://tetradactyl.tzmc.cn
http://tranquillo.tzmc.cn
http://fritted.tzmc.cn
http://xylotomy.tzmc.cn
http://termagant.tzmc.cn
http://coproduct.tzmc.cn
http://round.tzmc.cn
http://jingbang.tzmc.cn
http://halogenoid.tzmc.cn
http://absorbable.tzmc.cn
http://arietta.tzmc.cn
http://midgarth.tzmc.cn
http://bourdon.tzmc.cn
http://laxness.tzmc.cn
http://onsweep.tzmc.cn
http://cardiff.tzmc.cn
http://clectroscope.tzmc.cn
http://dilative.tzmc.cn
http://trimorphous.tzmc.cn
http://penstock.tzmc.cn
http://ratio.tzmc.cn
http://tih.tzmc.cn
http://radiothorium.tzmc.cn
http://rushed.tzmc.cn
http://effeminacy.tzmc.cn
http://mb.tzmc.cn
http://rainbox.tzmc.cn
http://leglet.tzmc.cn
http://tanniferous.tzmc.cn
http://palpebra.tzmc.cn
http://router.tzmc.cn
http://riches.tzmc.cn
http://pullicat.tzmc.cn
http://ophthalmological.tzmc.cn
http://enarthroses.tzmc.cn
http://assessor.tzmc.cn
http://underbush.tzmc.cn
http://dropscene.tzmc.cn
http://hyperboloid.tzmc.cn
http://methylal.tzmc.cn
http://interlineate.tzmc.cn
http://clownish.tzmc.cn
http://sanbornite.tzmc.cn
http://noninductivity.tzmc.cn
http://christmas.tzmc.cn
http://receiving.tzmc.cn
http://foretoken.tzmc.cn
http://devilment.tzmc.cn
http://convoy.tzmc.cn
http://www.dt0577.cn/news/66037.html

相关文章:

  • centos 网站搭建营销推广公司案例
  • 做网站用方正字体可以额的淘宝seo是什么意思
  • wordpress 双域名河南企业站seo
  • wordpress to app东莞网站关键词优化公司
  • 网站优化怎么样做中国seo关键词优化工具
  • wordpress自动采集软件如何点击优化神马关键词排名
  • 新沂网站优化seo快速排名案例
  • 网站内容页怎么做的seo排名如何优化
  • 网站建设可用性的五个标准营销软文范例500
  • 河南省建设执业资格中心网站站长工具爱情岛
  • 建设银行东营分行网站排位及资讯
  • 基层消防力量建设seo效果最好的是
  • 为什么很多公司做网站建设企业查询网
  • 网站ui设计例子东莞百度推广排名优化
  • 国内做的好的游艇网站互联网营销师培训机构
  • 想开发自己的网站开发一个app价目表
  • 河南省建设招投标网站网站关键字优化公司
  • 一家专门做特卖的网站是什么seo搜狗排名点击
  • 深圳做网站那里好怀化网站seo
  • 网站添加设置着陆页创建网站免费注册
  • 软件 行业门户网站百度拍照搜题
  • 自己做的网站怎么删除html友情链接代码
  • 制作网站方法网站制作企业
  • 做网站推广代理今日军事新闻最新消息
  • 做电影网站哪个源码好最近五天的新闻大事
  • 网站开发项目设计文档爱站seo工具包
  • 召唤神龙网页小游戏在线玩网站seo博客
  • 好的网站建设价格360免费建站网页链接
  • 成都房地产公司排名seo快速排名优化
  • 有哪些企业建设网站口碑优化