解题思路:
DP
提交代码:
class Solution {
public int numDistinct(String s, String t) {
if(s.length()<t.length()) return 0;
int[][] dp=new int[t.length()+1][s.length()+1];
for(int i=0;i<=s.length();i++)
dp[0][i]=1;
for(int i=1;i<=t.length();i++) {
for(int j=i;j<=s.length();j++) {
if(s.charAt(j-1)==t.charAt(i-1)) {
if(dp[i-1][j-1]==1&&i==j) dp[i][j]=1;
else dp[i][j]=dp[i-1][j-1]+dp[i][j-1];
}else {
if(i==j) dp[i][j]=0;
else dp[i][j]=dp[i][j-1];
}
}
}
return dp[t.length()][s.length()];
}
}
运行结果: