文章目录
题目
代码(首刷DP看解析)
真蠢,其实这个题就是LCS,代码都不带变的。
class Solution {
public:
bool isSubsequence(string s, string t) {
int m = s.size(), n = t.size();
vector<vector<int>> dp(m+1, vector<int>(n+1));
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] = max(dp[i][j-1], dp[i-1][j]);
}
}
}
return dp[m][n] == m;
}
};
这个题其实一次遍历就可以了,不用DP。
class Solution {
public:
bool isSubsequence(string s, string t) {
int m = s.size(), n = t.size();
int i = 0, j = 0;
while(i < m && j < n) {
if(s[i] == t[j]) {
i++;j++;
} else {
j++;
}
}
return i == m;
}
};