Distinct Subsequences Algorithm

COMING SOON!
class Solution {
public:
    int numDistinct(string S, string T) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        
        int M = S.size();
        int N = T.size();
        
        if (M == 0 && N == 0)
            return 1;
        else if (M < N)
            return 0;
            
        int F[N+1];
        memset(F, 0, sizeof(int)*(N+1));
        F[0] = 1;
        for (int i = 1; i <= M; i++) {
            for (int j = N; j >= 1; j--) {
                if (S[i-1] == T[j-1])
                    F[j] = F[j-1] + F[j];
            }
        }
        return F[N];
    }
};

LANGUAGE:

DARK MODE: