O
问题
解决方案
代码
class Solution {
public:
int numDistinct(string a, string b) {
int m = a.size();
int n = b.size();
vector<vector<unsigned long>>dp(m +1 , vector<unsigned long>(n+1,0));
for(int i = 0 ; i < m+1;i++){
dp[i][0] = 1;
}
for( int i = 1 ; i < m+1;i++){
for( int j = 1 ; j< n+1;j++){
dp[i][j] = dp[i-1][j];
if(a[i-1] == b[j-1]){dp[i][j] += dp[i-1][j-1]; }
}
}
return dp[m][n];
}
};
2
class Solution {
public:
int numDistinct(string a, string b) {
int m = a.size();
int n = b.size();
vector<vector<unsigned long>>dp(m +1 , vector<unsigned long>(n+1,0));
for(int i = 0 ; i < m+1;i++){
dp[i][0] = 1;
}
for (int i = 1; i < m + 1; i++) {
for (int j = 1; j < n + 1; j++) {
dp[i][j] = dp[i- 1][j] ;
if(a[i - 1] == b[j - 1]) {
dp[i][j] += dp[i - 1][j -1];
}
}
}
return dp[m][n];
}
};