题干:
代码:
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。