Leetcode 115. 不同的子序列

class Solution {
public:
    int numDistinct(string s, string t) {
        if (s.empty()) return 0;
        vector<int> dp(s.size(), 1);
        int pre, temp;
        for (int i = 0; i < t.size(); ++i) {
            pre = dp[0], dp[0] = (i == 0 && s[0] == t[0]) ? 1 : 0;
            for (int k = 1; k < s.size(); ++k)
                temp = dp[k], dp[k] = dp[k - 1] + (s[k] == t[i] ? pre : 0), pre = temp;
        }
        return dp[s.size() - 1];

    }
};

猜你喜欢

转载自blog.csdn.net/bendaai/article/details/80587979