不同的子序列
给你两个字符串 s
和 t
,统计并返回在 s
的 子序列 中 t
出现的个数,结果需要对 109 + 7 取模。
class Solution {
public:
int numDistinct(string s, string t) {
int dp[1100][1100];//dp[i][j]表示s前i个字符和t的前j个字符相同的
int n = s.length(), m = t.length();
s = " " + s, t = " " + t;
if(m > n) return 0;
for(int i = 0 ; i <= n ; i ++) dp[i][0] = 1;
for(int i = 1; i <= n ; i ++){
for(int j = 1; j <= m ; j ++){
dp[i][j] = dp[i-1][j];
if(s[i] == t[j]) dp[i][j] = (dp[i][j]+dp[i-1][j-1])%1000000007;
}
}
return dp[n][m];
}
};