[leetcode] Distinct Subsequences
来源:互联网 发布:淘宝客户资料购买平台 编辑:程序博客网 时间:2024/06/03 23:00
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[i][j]表示从字符串i到j的数量,如果S[i]==T[j],那么dp[i][j] = dp[i-1][j-1] + dp[i-1][j]。意思是:如果当前S[i]==T[j],那么当前这个字母即可以保留也可以抛弃,所以变换方法等于保留这个字母的变换方法加上不用这个字母的变换方法。
如果S[i]!=T[i],那么dp[i][j] = dp[i-1][j],意思是如果当前字符不等,那么就只能抛弃当前这个字符。
递归公式中用到的dp[0][0] = 1,dp[i][0] = 1,dp[0][j]=0(把任意一个字符串变换为一个空串只有一个方法)
代码:
class Solution {public: int numDistinct(string S, string T) { if(S.size()==0) return 0; if(S.size()<T.size()) return 0; int dp[S.size()+1][T.size()+1]; dp[0][0]=1; for(int i=0;i<=S.size();i++){ dp[i][0]=1; } for(int j=1;j<=T.size();j++){ dp[0][j]=0; } for(int i=1;i<=S.size();i++){ for(int j=1;j<=T.size();j++){ dp[i][j]=dp[i-1][j]; if(S[i-1]==T[j-1]){ dp[i][j]+=dp[i-1][j-1]; } } } return dp[S.size()][T.size()]; }};
0 0
- LeetCode Distinct Subsequences
- [LeetCode]Distinct Subsequences
- [Leetcode] Distinct Subsequences *
- [leetcode] Distinct Subsequences
- [LeetCode] Distinct Subsequences
- [Leetcode] Distinct Subsequences
- leetcode 111: Distinct Subsequences
- LeetCode Distinct Subsequences
- [leetcode] Distinct Subsequences
- LeetCode - Distinct Subsequences
- Leetcode:Distinct Subsequences
- [LeetCode]Distinct Subsequences
- [LeetCode] Distinct Subsequences
- [Leetcode]Distinct Subsequences
- [leetcode]Distinct Subsequences
- Leetcode: Distinct Subsequences
- Leetcode: Distinct Subsequences
- [leetcode] Distinct Subsequences
- Java集合类汇总记录--guava篇
- Nginx配置proxy_pass
- Android环境搭建
- json
- wax lua 脚本升级练习(1)
- [leetcode] Distinct Subsequences
- erlang 小程序:整数序列,搜索和为正的最长子序列
- java nio http服务器(3)简单的Servlet容器
- 【转】jQuery选择器中含有空格的注意事项
- tomcate 发布 webservice
- ITA 15 DP 图
- android taskAffinity属性
- Dex文件头及解析机制分析
- STP、RSP、MSTP的区别