思路:
和最长公共子序列的区别是,这道题两个字符串都是自己的。所以改一下递推公式的方向,方向只从母串继承即可。
储备:
问题重点:
最后:
class Solution {
public:
bool isSubsequence(string s, string t) {
int n=t.size();
int m=s.size();
vector<vector<int>> dp(n+1,vector<int>(m+1,0));
//母串i-1,子串j-1位置的最大子序列长度
int res=0;
for (int i=1;i<=n;i++) {//遍历母串t
for (int j=1;j<=m;j++) {//遍历子串s
if (t[i-1]==s[j-1]) dp[i][j]=dp[i-1][j-1]+1;
else dp[i][j]=dp[i-1][j];//继承母串的最大子序列长度。
res=max(res,dp[i][j]);
}
}
return res==m?true:false;
}
};

84

被折叠的 条评论
为什么被折叠?



