零、欸嘿!
英雄哪里出来《算法零基础100讲》传送门
《算法零基础100讲》(第31讲) 多维枚举(一) - 入门_英雄哪里出来-CSDN博客多维枚举(一) - 入门https://blog.csdn.net/WhereIsHeroFrom/article/details/121434597每天会开启一篇试读文章,每日坚持打卡就可以一直白嫖哦
一、题目
难度简单545
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,
"ace"
是"abcde"
的一个子序列,而"aec"
不是)。进阶:
如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?
示例 1:
输入:s = "abc", t = "ahbgdc" 输出:true
力扣https://leetcode-cn.com/problems/is-subsequence/
二、解题
思路:定义一个s数组最左端的下标i,然会循环遍历t数组,俩数组相等一次,i就往后挪一位(就是i++),如果,能让i挪到s数组的最后,就说明s是t的一个子数列
bool isSubsequence(char * s, char * t){ 、// 给的俩数组s和t
if(s[0]==NULL){ //特殊判断一下,s为空的情况
return true;
}
int lenS=strlen(s); //用strlen()函数,求s的长度
int lenT=strlen(t); //同样,求t的长度
int i=0; //数组左边下标
for(int j=0;j<lenT;j++){ //循环遍历t数组
if(s[i]==t[j]){
i++; //当两个数组相等时,i向下挪一位
}
if(i==(lenS)){ //如果能让s数组挪到最后,恭喜,可以返回true
return true;
}
}
return false; //不然就返回false呗
}
三、结果
错了好多次QAQ