1.题目:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。
题目链接地址:https://leetcode-cn.com/problems/is-subsequence/
2.解题思路: 从前往后遍历子串和主串,如果相等,都向后移动,如果不相等主串向后移动, * 如果子串到达文件末尾返回为true,否则返回为false
时间复杂度O(n)
3.代码
public static void main(String[] args) {
String s="abc";
String t="ahbgdc";
boolean subsequence = isSubsequence(s, t);
System.out.println(subsequence);
}
/**
* leetcode 392 是否是子序列
* 时间复杂度O(n) 题的难度 简单
* 从前往后遍历子串和主串,如果相等,都向后移动,如果不相等主串向后移动,
* 如果子串到达文件末尾返回为true,否则返回为false
* @Date: 2020/5/7 18:30
* @Author: fuGuoWen
* @Return java.lang.Boolean true s是t的子序列 false s不是t的子序列
* @Throws
*/
public static Boolean isSubsequence(String s, String t) {
int n = s.length();
int m = t.length();
int i=0;
int j=0;
while(i<n && j<m){
char c = s.charAt(i);
char d = t.charAt(j);
if(c==d){
i++;
j++;
}else{
j++;
}
}
if(i==n){
return true;
}
return false;
}