描述
分析
双指针。
指针i指向s的第一个字符,指针j指向t的第一个字符。
比较指针i和j位置的字符,如果相等,同时移动指针,i++,j++;
如果i和j位置的字符不相等,只移动j,即j++;
当i先走到s结尾,直接返回true,代表s是t的子序列。
当j走到结尾,看i是不是结尾,如果不是,代表s不是t的子序列。
代码
根据分析写出代码:
public class 判断子序列 {
public boolean isSubsequence(String s, String t) {
int i = 0, j = 0;
while (i< s.length() && j< t.length()) {
if (s.charAt(i) == t.charAt(j)) {
// 两个指针位置的元素相等,两个指针都往前移动
i++;
j++;
} else {
// 指针位置的元素不相等,只移动t序列的指针
j++;
}
}
// 如果s到达末尾,代表s是t的子序列,否则不是
return i == s.length();
}
}