首页 > 编程语言 > 详细

115. distinct subsequence leetcode python

时间:2015-03-13 10:56:39      阅读:281      评论:0      收藏:0      [点我收藏+]

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.

This problem is a typical dp problem.. we need to maintain  a dp array to find the result by sequence.

here I have two approaches one I need to use O(m.n) space one need to just use O(m) space.

The time complexity is always the same. O(m.n) because we need to travesal the two strings

the first method is to  maintain DP[n][m]


code is as follow

class Solution:
    # @return an integer
    def numDistinct(self, S, T):
        dp=[[0 for j in range(len(T)+1)] for i in range(len(S)+1)]
        for i in range(len(S)+1):
            dp[i][0]=1
        for i in range(1,len(S)+1):
            for j in range(1,len(T)+1):
                if S[i-1]==T[j-1]:
                    dp[i][j]=dp[i-1][j-1]+dp[i-1][j]
                else:
                    dp[i][j]=dp[i-1][j]
        return dp[-1][-1]




second method saves more space but we need to reversed the order

class Solution:
    # @return an integer
    def numDistinct(self, S, T):
        if len(S)==0:
            return 0
        if len(T)==0:
            return 1### 
        res=[0 for j in range(len(T)+1)]
        res[0]=1
        for  i in range(len(S)):
            for j in reversed(range(len(T))):
                if S[i]==T[j]:
                    res[j+1]=res[j]+res[j+1]
        return res[len(T)]
                
        


115. distinct subsequence leetcode python

原文:http://blog.csdn.net/hyperbolechi/article/details/44236967

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!