题目链接
dp表示 t从0到i是否能表示s从0到j
1.如果t[i]==s[j] 那么就看t的前i个是否能表示s的前j个
2.如果t[i]!=s[j] 那么就看t的前i个能否表示表示s的前j+1个
例如 abcd abcde 当s[3]!=s[4] 其实他已经是一个子序列了
public boolean isSubsequence(String s, String t) {
if(s.length()==0){
return true;
}
int[][] dp=new int[t.length()+1][s.length()+1];
//dp表示 t从0到i是否能表示s从0到j
for(int i=0;i<t.length();i++) {
dp[i][0]=1;
}
for(int i=0;i<t.length();i++){
for(int j=0;j<s.length();j++) {
if(t.charAt(i)==s.charAt(j)) {
dp[i+1][j+1]=dp[i][j];
}else {
dp[i+1][j+1]=dp[i][j+ 1];
}
}
}
if(dp[t.length()][s.length()]==0) {
return false;
}else {
return true;
}
}