class Solution {
public:
bool isSubsequence(string s, string t) {
// 公共子序列是不是s 长度相同
// dp[i][j] 表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度为dp[i][j]。
// if s[i] == t[j] dp[i][j] = dp[i-1][j-1] = true
if (s.size() == 0) return false;
int m = s.size();
int n = t.size();
vector<vector<int>> dp(m+1, vector<int>(n+1, false));
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; 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 true;
return false;
}
};