每天一道leetcode-392判断子序列

392_(判断子序列)Is Subsequence

1 问题描述、输入输出与样例

1.1 问题描述

给定字符串 s 和 t ,判断 s 是否为 t 的子序列。

你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。

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

后续挑战 :

如果有大量输入的 S,称作S1, S2, … , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?

1.2 输入与输出

输入:

  • string s:给定的字符串 s

  • string t:给定的字符串 t

输出:

  • bool:判断 s 是否为 t 的子序列

1.3 样例

1.3.1 样例1

输入: s = "abc", t = "ahbgdc"

输出: true

1.3.2 样例2

输入: s = "axc", t = "ahbgdc"

输出: false

2 思路描述与代码

2.1 思路描述(双下标法)

i为字符 s 的遍历下标, j 表示字符 t 的遍历下标

 
for( j = 0; j < len_t; j++ ){
   if(s[i] == t[j]){
       if(i == len_s - 1) return true;
       else i++;
   }
}

比如输入: s = "abc", t = "ahbgdc";

j = 0, i = 0, s[0] == t[0], i = 1;

j = 1, i = 1, s[1] != t[1];

j = 2, i = 1, s[1] == t[2], i = 2;

j = 3, i = 2, s[1] != t[3];

j = 4, i = 2, s[2] != t[4];

j = 5, i = 2, s[2] == t[5], 返回true;

2.2 代码

 
bool isSubsequence(string s, string t) {
   int len_s = s.size();
   int len_t = t.size();
   //边界情况
   if(len_s > len_t) return false;
   else if(len_s == 0) return true;

   //遍历t
   int i = 0, j = 0;
   for( j = 0; j < len_t; j++ ){
       //如果当前字符相等,查找 s 的下一个字符是否在 t 中
       if(s[i] == t[j]){
           if(i == len_s - 1) return true;
           else i++;
       }
   }
   return false;
}

3 思考与拓展

3.1 思考

本题按照子序列的定义并利用双下标法可以很容易解决。

3.1.1 其他方法

无。

3.1.2 复杂度分析

方法 空间复杂度 时间复杂度
双下标法 O(1) O(s_len+t_len)

3.1.3 难点分析

  1. i下标的更新。

3.2 拓展

如果给你的是数组数据呢?


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,323评论 0 2
  • 计算机二级C语言上机题库(南开版) 1.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平...
    MrSunbeam阅读 6,315评论 1 42
  • 不知为什么学起花艺来。可能是命里的一种缘分。 人与人之间的缘分常常妙不可言,人与物之间也有时如此。 小时候有过很多...
    辰亦风阅读 1,475评论 0 0
  • 怀念的是从前的211.一个宿舍六个人,六个人都上了红榜。最厉害的一次是三个人进了年段前十,RX第一,JQ第四我第六...
    叁叁得酒阅读 200评论 0 1
  • 经过交流,我才知道原来你是我的初中同学。你为人幽默风趣,懂得照顾我的小情绪和偶尔的尴尬不知该说些什么。这时你总能...
    凝瑕青华阅读 232评论 0 0