`
huntfor
  • 浏览: 195721 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

[leetcode]Distinct Subsequences

 
阅读更多

新博文地址:[leetcode]Distinct Subsequences

Distinct Subsequences

Given a string S and a string T, count the number of distinct subsequences of T in S.

A subsequence of a string is a new string which is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (ie, "ACE" is a subsequence of "ABCDE" while "AEC" is not).

Here is an example:
S = "rabbbit", T = "rabbit"

Return 3.

 这道题递归是肯定要超时的,参考了难度表,提示用DP,好吧,实在不解,还是google吧。看了很多博客的解法,几乎都是一模一样的,就不再啰嗦,实在不明白了就看这篇吧。

copy代码如下:

  public int numDistinct(String S, String T) {
        int[][] dp = new int[T.length() + 1][S.length() + 1];
        dp[0][0] = 1;
        for(int i = 1 ; i <= S.length(); i++){
        	dp[0][i] = 1;
        }
        for(int i = 1 ; i <= T.length(); i++){
        	dp[i][0] = 0;
        }
		for (int i = 1; i <= T.length(); i++) {
			for(int j = 1; j <= S.length(); j++){
        		dp[i][j] = dp[i][j - 1];
        		if(T.charAt(i - 1) == S.charAt(j - 1)){
        			dp[i][j] += dp[i - 1][j - 1];
        		}
        	}
        }
        return dp[T.length()][S.length()];
    }

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics