暴力解法
class Solution {
public:
bool isSubsequence(string s, string t) {
if(s.size() > t.size()) return false;
if(s.size() < t.size()) {
swap(s, t);
}
bool reslut = false;
int flag = 0;
bool findflag = false;
for(int i = 0;i < t.size();i++) {
for(;flag < s.size();flag++) {
if(s[flag] == t[i]) {
flag++;
findflag = true;
break;
}
}
if(findflag) {
findflag = false;
}else return false;
}
return true;
}
};
动态规划,其实和之前最长公共子序列一样,只不过最后就是比较以下dp数组的值是否和字符串s的长度相同
class Solution {
public:
bool isSubsequence(string s, string t) {
if(s.size() > t.size()) return false;
vector<vector<int>> dp(s.size() + 1, vector<int>(t.size() + 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] + 1;
}else {
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
// 这里其实 = dp[i][j - 1]就可以
}
}
}
if(dp[s.size()][t.size()] == s.size()) return true;
else return false;
}
};