题干:
代码:
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] = max(dp[i][j - 1], dp[i - 1][j]);
}
}
if(dp[s.size()][t.size()] == s.size()) return true;
else return false;
}
};
判断s是否为t的子序列,实质上就是看s与t的最长公共子序列是否为s。