目录
题目描述:
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。
输入:
s = "abc", t = "ahbgdc"
输出:
true
- 0 < = s . l e n g t h < = 100 0 <= s.length <= 100 0<=s.length<=100
- 0 < = t . l e n g t h < = 1 0 4 0 <= t.length <= 10^4 0<=t.length<=104
- 两个字符串都只由小写字符组成。
代码实现:
java
public class Main{
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "b";
String t = "abc";
System.out.println(isSubsequence(s, t));//true
}
public static boolean isSubsequence(String s, String t) {
// 判断s是否为t的子序列
int len = s.length();// 子序列的长度
int index = 0;// 匹配成功的位数
if (len > 0) {// 防止子序列越界
for (int i = 0; i < t.length(); i++) {
char c = t.charAt(i);// 获取子序列中的每一个字符
if (index == len) {
break;// 防止越界
}
if (c == s.charAt(index)) {
index++;// 如果当前子序列的字符与主串匹配,指针加一
}
}
}
return index == len;// 匹配成功位数 是否和 模式串长度一致
}
}