● 392.判断子序列 ● 115.不同的子序列
● 392.判断子序列
class Solution {
public:bool isSubsequence(string s, string t) {int len1=s.size(),len2=t.size();int res=0;vector<vector<int>>dp(s.size()+1,vector<int>(t.size()+1,false));for(int i=1;i<=s.size();i++){for(int j=1;j<=len2;j++){if(s[i-1]==t[j-1])dp[i][j]=dp[i-1][j-1]+1;elsedp[i][j]=dp[i][j-1];if(res<dp[i][j])res=dp[i][j];}}if(res==s.size())return true;return false;}
};
● 115.不同的子序列
class Solution {
public:int numDistinct(string s, string t) {if(s.size()<t.size())return 0;vector<vector<uint64_t>>dp(s.size()+1,vector<uint64_t>(t.size()+1,0));int res=0;for(int i=0;i<=s.size();i++)dp[i][0]=1;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]+dp[i-1][j];elsedp[i][j]=dp[i-1][j];}}
return dp[s.size()][t.size()];}
};