1、题目描述
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。
?2、题目分析
本题使用双指针。
t1 ,t2 是两个指针分别指向两个数组的开始下标。t1,t2分别指向的a,值相等,所以此时
t1指针往后移动,指向c,t2指向b,c!=b,t2继续往后以移动,指向c。此时t1指向的和t2指向的值相等。重复此操作,直到t1指向最后一个元素,并且对应的t2指向了和t1相等的值。此时,t1指向的序列是t2的子序列。
?
?
?
3、代码实现
/**
双指针法求解
*/
import java.util.*;
class Solution {
public boolean isSubsequence(String s, String t) {
int sLength = s.length();
int tLength = t.length();
// 将字符串转换为字符数组
char[] c1 = s.toCharArray();
char[] c2 = t.toCharArray();
// 定义数组下标
int a = 0,b = 0;
while(a < sLength && b < tLength){
if(c1[a] == c2[b]){
a++;
}
// 不等的话,大字符数组往右走
b++;
}
return a == sLength;
}
}
?
|