代码随想录Day55 | 392.判断子序列 、115.不同的子序列

392.判断子序列

dp含义:dp[i][j] 以i-1为结尾的s中有以j-1为结尾的t的个数

递推公式:

if (s[i - 1] == t[j - 1]) dp[i][j] = dp[i - 1][j - 1] + 1;
else dp[i][j] = dp[i][j - 1];

初始化:第一行第一列初始化

遍历顺序:从上到下 从左到右

class Solution {
public:
    bool isSubsequence(string s, string t) {
        vector> dp(s.size() + 1, vector(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] = dp[i][j - 1];
            }
        }
        if (dp[s.size()][t.size()] == s.size()) return true;
        return false;
    }
};

115.不同的子序列

先了解

你可能感兴趣的:(算法,数据结构)