码迷,mamicode.com
首页 > 其他好文 > 详细

lc 115. Distinct Subsequences

时间:2018-09-20 11:09:51      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:class   code   etc   problems   ret   lse   bbb   str   elf   

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

 

求串s中有几个字串t?

 

开始看成了s和t有几个公共字串,想来也是dp。题目中明显s和t不是对称的。

 

对于s中最后字符c,如果和t中最后一个不同,那么去掉这个c是对结果无影响的。

如果相同,我们有两种选择:用它,不用它。

于是就是:

if s[i]==t[j]:
dp[i][j]=dp[i-1][j-1]+dp[i-1][j]
else:
dp[i][j] = dp[i - 1][j]

code:
class Solution:
    def update(self,i,j):
        if i<0 or j<0:
            return 0

    def numDistinct(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: int
        """
        sl=len(s)
        tl=len(t)
        if sl*tl==0:
            return 0
        dp=[[0]*tl for _ in range(sl)]
        if s[0]==t[0]:
            dp[0][0]=1
        for i in range(1,sl):
            dp[i][0]=dp[i-1][0]
            if s[i]==t[0]:
                dp[i][0]+=1
        for i in range(1,sl):
            for j in range(1,tl):
                if s[i]==t[j]:
                    dp[i][j]=dp[i-1][j-1]+dp[i-1][j]
                else:
                    dp[i][j] = dp[i - 1][j]
        # print(dp)
        return dp[-1][-1]
s=Solution()
print(s.numDistinct("babgbag", "bag"))
# print(s.numDistinct("rabbbit", "rabbit"))

 

lc 115. Distinct Subsequences

标签:class   code   etc   problems   ret   lse   bbb   str   elf   

原文地址:https://www.cnblogs.com/waldenlake/p/9678522.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!