码迷,mamicode.com
首页 > 编程语言 > 详细

[LeetCode]题解(python):115-Distinct Subsequences

时间:2016-03-10 23:39:35      阅读:584      评论:0      收藏:0      [点我收藏+]

标签:

题目来源:

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


 

题意分析:

  给定字符串S和T,判断S中可以组成多少个T,T是S的子串。


 

题目思路:

  这是一个动态规划的问题。设定ans[i][j]为s[:i] 组成t[:j]的个数。那么动态规划方程为,if s[i - 1] == t[j - 1]: ans[i][j] = ans[i - 1][j - 1] + ans[i - 1][j];else: ans[i][j] = ans[i - 1][j]。


 

代码(python):

  

技术分享
class Solution(object):
    def numDistinct(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: int
        """
        m,n = len(s),len(t)
        ans = [[0 for i in range(n+1)] for i in range(m+1)]
        for i in range(m + 1):
            ans[i][0] = 1
        for i in range(1,m + 1):
            for j in range(1,n + 1):
                if s[i - 1] == t[j - 1]:
                    ans[i][j] = ans[i - 1][j - 1] + ans[i - 1][j]
                else:
                    ans[i][j] = ans[i-1][j]
        return ans[m][n]
View Code

[LeetCode]题解(python):115-Distinct Subsequences

标签:

原文地址:http://www.cnblogs.com/chruny/p/5263808.html

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