leetcode 392.判断子序列
思路:双指针。
两个指针分别指向两个字符串的首部,然后我们判断这两个指针现在指向的位置的字符是不是相同的;如果相同我们就两个指针同时移动;如果不同,我们就移动长度较大的那个字符串的指针向右。直至我们的指针有一个遍历完结束。画上计数器,如果我们的计数器的次数和子序列的长度是一样的,说明我们已经遍历完了子序列并且t中有一个子序列可以和s相同。
特判:如果s的长度>t的长度,那么这个时候就是false;如果s是空的,那么就是true。
class Solution {
public boolean isSubsequence(String s, String t) {
int l=0;
int r=0;
if(s.equals(""))
return true;
if(s.length()>t.length())
return false;
int cnt=0;
while(l<=s.length()-1&&r<=t.length()-1){
if(s.charAt(l)==t.charAt(r)){
cnt++;
l++;
r++;
if(cnt==s.length()){
return true;
}
}
else{
r++;
}
}
return false;
}
}