[Leetcode]Distinct Subsequences
2016-01-08 10:43
369 查看
Given a string S and a string T, count the number of distinct subsequences ofT 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,
Here is an example:
S =
Return
Subscribe to see which companies asked this question
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.
Subscribe to see which companies asked this question
class Solution { public: /*algorithm: DFS this is brute force, select T'char from S char set, it has time limit error on OJ */ void dfs(string &s,string &t,string sub,int &count,int start){ if(sub.size() == t.size()){ count++; return; } for(int i = start;i < s.size();i++){ if(s[i] == t[sub.size()]){ sub.append(1,s[i]); dfs(s,t,sub,count,i+1); sub.erase(sub.size()-1); } } } int numDistinct(string s, string t) { if(s.size() < t.size())return 0; int count = 0; dfs(s,t,"",count,0); return count; } };
class Solution { public: /*algorithm: dp dp(i,j): denote the distinct sequences of s(0,i) to t(0,j) transit function: dp(i,j) = dp(i-1,j) + dp(i-1,j-1) if(s[i] == t[j]) = dp(i-1,j) intial: dp(0,0)=1,dp(i,0)=1 dp(0,j)=0: result: dp(s.size(),t.size()) time O(ST) space O(ST) */ int numDistinct(string s, string t) { if(s.size() < t.size())return 0; vector<vector<int> >dp(s.size()+1,vector<int>(t.size()+1,0));//dp[S+1][T+1] dp[0][0]=1; for(int i = 1;i <= s.size();i++){ dp[i][0]=1; 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()]; } };
相关文章推荐
- UITableViewCell的backgroundColor和backgroundView
- Requirejs常用配置和应用
- 通过Socket uevent与内核通信
- l backtype.storm.ui.core Exception in thread "main" java.net.BindException: Address already in use
- iOS个人整理06-第一周小结,常用控件UIView,UILabel,UIImageView,UIButton,UITextField
- Android的UI底层是用CPU绘图的还是GPU绘图的呢?以及surfaceview,window,普通view是如何实现的?
- iOS开发之UITableView全面解析
- 对于U盘做系统,win8降级到win7系统的心得体会
- [zz]wpf xaml xmlns 跟我一起学WPF(1):WPF的UI设计语言——XAML
- ios里的UIActionSheet的使用
- iOS UITextField的leftView
- UIActivityIndicatorView的使用
- 纯代码创建UIDatePicker
- 关于HBulider,mui框架入手可行性
- php中include,include_once和require,require_once的用法区别
- 5.3. Tuples and Sequences(元组和序列)
- Material Design Guide
- 信号发送函数sigqueue和信号安装函数sigaction
- 【bzoj4059】[Cerc2012]Non-boring sequences 分治
- deque(2)