392.判断子序列
class Solution {
public:
bool isSubsequence(string s, string t) {
vector<vector<int>> dp(s.size()+1, vector<int>(t.size()+1, 0));
for(int i=1; i<=s.size(); i++){
for(int j=1; j<=t.size(); j++){
if(s[i-1]==t[j-1]) dp[i][j]= dp[i-1][j-1]+1;
else dp[i][j] = dp[i][j-1];
}
}
// if(dp[s.size()][t.size()]==s.size())
return dp[s.size()][t.size()]==s.size();
}
};
参考文章:代码随想录-392.判断子序列
115.不同的子序列
class Solution {
public:
int numDistinct(string s, string t) {
vector<vector<uint64_t>> dp(t.size()+1, vector<uint64_t>(s.size()+1, 0));
for(int i=0; i<=s.size(); i++) dp[0][i] = 1;
for(int i=1; i<=t.size(); i++){
for(int j=1; j<=s.size(); j++){
if(t[i-1] == s[j-1]){
dp[i][j] = dp[i-1][j-1] + dp[i][j-1];
}
else dp[i][j] = dp[i][j-1];
}
}
return dp[t.size()][s.size()];
}
};
参考文章:代码随想录-115.不同的子序列