import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param S string字符串
* @param T string字符串
* @return bool布尔型
*/
public boolean isSubsequence (String s, String t) {
// write code here
if(s.length() == t.length()) {
if(s.equals(t)){
System.out.print(true);
return true;
} else {
System.out.print(false);
return false;
}
}
if(s.length() > t.length()) {
System.out.print(false);
return false;
}
//字符串t的前i个字符中匹配个数
int[] dp = new int[t.length()+1];
for(int i=0; i<t.length()+1; i++) {
dp[i] = 0;
}
int cur = 1;// 2 10 now1","nowcoder1"
for(int i=0; i<s.length(); i++) {
char c = s.charAt(i);
if(cur <= t.length()) {
for( ;cur<t.length()+1; cur++) {
if(c == t.charAt(cur-1)) {
dp[cur] = dp[cur-1] + 1;
cur++;
break;
} else {
//不匹配,往后移,当前匹配数等于上个匹配数
dp[cur] = dp[cur-1];
}
}
}
if(cur > t.length()) {
break;
}
}
if(dp[t.length()] == s.length()) {
System.out.print(true);
return true;
}
System.out.print(false);
return false;
}
}