给定字符串 s 和 t ,判断 s 是否为 t 的子序列。
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。
进阶:
如果有大量输入的 S,称作 S1, S2, … , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。
示例 1:
输入:s = “abc”, t = “ahbgdc”
输出:true
示例 2:
输入:s = “axc”, t = “ahbgdc”
输出:false
提示:
0 <= s.length <= 100
0 <= t.length <= 10^4
两个字符串都只由小写字符组成。
class Solution {
public boolean isSubsequence(String s, String t) {
//检查 t的下标
int index = 0;
boolean isSub = true;
/**
*顺序获取 s中的字符
*查找字符第一次出现在 t中的下标
*从后一个下标继续步骤
*/
for(int i = 0; i < s.length(); i++) {
//查找下标
int temp = t.indexOf(s.charAt(i), index);
//无查找结果则不是子序列
if(-1 == temp) {
isSub = false;
break;
}
//t的剩余长度小于 s的剩余长度则不是子序列
if(t.length()-temp < s.length()-i) {
isSub = false;
break;
}
//继续从后一下标查找
index = temp + 1;
}
return isSub;
}
}