目录
一.题目
1.题目详情
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"
是"abcde"
的一个子序列,而"aec"
不是)。
进阶:
如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?
示例 1:
输入:s = "abc", t = "ahbgdc" 输出:true
392. 判断子序列 - 力扣(Leetcode)https://leetcode.cn/problems/is-subsequence/description/
二.解题思路
1.先将两个字符串的长度获取到
2.定义i表示要判断的是否是子串的字符串索引,j用来指定母字符串的是索引位置
3.用while进行遍历,当两个索引有一个超出字符串长度时跳出循环
4.在循环里当存在两个字符相等时,i向后移,j一直后移
5.返回,如果i等于其字符串长度,则表示其是另一个字符串的子串
三.代码
class Solution {
public boolean isSubsequence(String s, String t) {
int lenS=s.length(),lenT=t.length();
int i=0,j=0;
while(i<lenS&&j<lenT){
if(s.charAt(i)==t.charAt(j))
i++;
j++;
}
return i==lenS;
}
}
四.题后语()
这道题刚拿到手,我习惯性的使用for循环来进行循环,这样循环遍历出来返回结果在我提交的时候总是出现各种各样的的问题,第一个问题是当两个是空串的时候,判断不出来,第二个问题是当s="aaaaaa"t= "bbaaaa"时,居然返回的是true,简直离谱,然后是只有一个不相等字符的时候,返回的是true,然后写着写着,感觉好像不如直接用while,然后就用while来写了一下,直接就通过了,我真的是会谢。