[LeetCode] Distinct Subsequences
来源:互联网 发布:带着淘宝混异界 叶忆落 编辑:程序博客网 时间:2024/06/05 03:50
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: 建立一个matrix,matrix(i,j)表示从s.substr(0,j) 可以有多少个t.substr(0,i)的子串
<pre name="code" class="cpp">class Solution {public: int numDistinct(string s, string t) { int m = s.length(); int n = t.length(); if(m*n==0) return 0; // each position<i,j> indicates how many subsequences of t.substr(0,i) contains in s.substr(0,j) vector<vector<int>> subseqs; //init it to all zeros for(int i=0; i<n; i++) { vector<int> row; for(int j=0; j<m; j++) { row.push_back(0); } subseqs.push_back(row); } //int the first row for(int j=0; j<m; j++) { if(j==0){ if(t[0]==s[j]) subseqs[0][j]=1; continue; } if(t[0]!=s[j]) subseqs[0][j]=subseqs[0][j-1]; else subseqs[0][j]=subseqs[0][j-1]+1; } for(int i=1; i<n; i++) { for(int j=1; j<m; j++) { if(t[i]!=s[j]){ subseqs[i][j] = subseqs[i][j-1]; } else{ // the first term is: if s[j] is not used to form the substr t.substr(0,j) from s.substr(0,i) // the second term is s[j] is used to get the subsequence subseqs[i][j] = subseqs[i][j-1]+subseqs[i-1][j-1]; } } } return subseqs[n-1][m-1]; }};
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
- linux生成jar包,并运行,引用该jar包
- Windows10 如何会成为微软的新起点?
- Windows10 如何会成为微软的新起点?
- 杭电 1241 Oil Deposits 递归 DFS
- Spring使用SLF4J代替Commons Logging写日志
- [LeetCode] Distinct Subsequences
- POJ 3061 简单二分
- 机器学习 之 libsvm 参数说明
- 你不经历我的经历,怎么懂我的感受
- Ogre::scene_blend 场景混合
- ubuntu crontab详细介绍
- Java工厂模式
- Android Data Binding高级用法-Observable、动态生成Binding Class(三)
- php发送http请求的几种方法