Leetcode 115 Solution

This article provides solution to leetcode question 115 (distinct-subsequences).

https://leetcode.com/problems/distinct-subsequences

Solution

class Solution {
public:
    int numDistinct(string s, string t) {
        int m = s.size();
        int n = t.size();
        int dp[m][n];
        
        if (t.size() == 0)
            return 1;
        if (s.size() == 0)
            return 0;
        
        dp[0][0] = s[0] == t[0];
        
        for (int j = 1; j < t.size(); j++)
            dp[0][j] = 0;
        
        for (int i = 1; i < s.size(); i++)
            dp[i][0] = dp[i - 1][0] + (s[i] == t[0]);
        
        for (int i = 1; i < m; i++)
        {
            for (int j = 1; j < n; j++)
            {
                dp[i][j] = dp[i - 1][j];
                
                if (s[i] == t[j])
                    dp[i][j] += dp[i - 1][j - 1];
            }
        }
        
        return dp[s.size() - 1][t.size() - 1];
    }
};