DetermineSubsequence题目描述:给定字符串s和t,判断s是否是t的子序列。字符串的子序列是在不改变剩余字符的相对位置的情况下,从原始字符串中删除(或不删除)某些字符而形成的新字符串。(例如,“ace”是“abcde”的子序列,但“aec”不是)。进阶:如果有大量的输入S,称为S1,S2,...,Sk其中k>=10亿,需要依次检查它们是否是T的子序列。在这种情况下,您将如何更改代码?例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:双指针遍历首先判断几种特殊情况:如果s的子串为空,则s一定是t的子序列,直接返回true;如果s不为空且t为空,则s不能是t的子序列,直接返回false;如果s子串的长度大于t的长度,则s不可能是t的子串,直接返回false。如果不是特殊情况,用双指针分别指向s和t的第一个字符,然后遍历s和t的字符。遍历过程如下:如果s未遍历过的字符串长度大于t未遍历过的字符串长度,则s不能是t的子串,直接返回false;如果s和t当前位置的字符相同,则指针向后移动一位;如果s和t当前位置的字符相同,则指向t的指针向前移动一位;遍历结束的条件是s或t遍历到最后一位。最后判断如果s遍历完成,说明s是t的子序列,返回true;否则,返回假。publicclassLeetCode_392{/***双指针**@params*@paramt*@return*/publicstaticbooleanisSubsequence(Strings,Stringt){/***如果s子串为空,则s必须是t的子序列,直接返回true*/if(s==null||s.length()==0){returntrue;}//如果s不为空,t为空,则s不能是t的子序列,直接返回falseif(t==null||t.length()==0){returnfalse;}//如果s子串的长度大于t的长度,则s不可能是t的子串,直接返回falseif(s.length()>t.length()){returnfalse;}//分别指向s和t的第一个字符intsIndex=0,tIndex=0;//一个一个的遍历字符,直到遍历完s或t的最后一个字符while(sIndex
