Distinct Subsequences

public class Solution {
    /**
     * @param S: A string
     * @param T: A string
     * @return: Count the number of distinct subsequences
     */
		public int numDistinct(String S, String T) {
			if (S == null || T == null) {
				return 0;
			}
			
			int[][] dp = new int[S.length() + 1][T.length() + 1];
			for (int i = 0; i <= S.length(); i++) {
				dp[i][0] = 1;
			}
			
			for (int i = 1; i <= S.length(); i++) {
				for (int j = 1; j <= T.length(); j++) {
					dp[i][j] = dp[i - 1][j];
		if (S.charAt(i - 1) == T.charAt(j - 1)) { //意味着当前位置能匹配到
		dp[i][j] += dp[i - 1][j - 1];
		}
				}
			}
			
			return dp[S.length()][T.length()];
		}
		
}

最后更新于

这有帮助吗?