题目

distinct-subsequences


算法

* DP

O(n*m)


代码


class Solution {

public:

    int numDistinct(string S, string T) {

        int dp[T.size() + 1][S.size() + 1];

        for (int i = 0; i <= S.size(); ++i) dp[0][i] = 1;    

        for (int i = 1; i <= T.size(); ++i) dp[i][0] = 0;    

        for (int i = 1; i <= T.size(); ++i) {

            for (int j = 1; j <= S.size(); ++j) {

                dp[i][j] = dp[i][j - 1] + (T[i - 1] == S[j - 1] ? dp[i - 1][j - 1] : 0);

            }

        }

        return dp[T.size()][S.size()];

    }

results matching ""

    No results matching ""