[LeetCode] Distinct Subsequences
来源:互联网 发布:软件用例图 编辑:程序博客网 时间:2024/09/21 09:04
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
.
class Solution {public: int numDistinct(string S, string T) { // Start typing your C/C++ solution below // DO NOT write int main() function int result=0; match(S,T,-1,-1,result); return result; } void match(string S, string T, int lastS, int lastT, int &result) { if(lastT==T.length()-1) { result++; return; } for(int i=lastS+1;i<S.length();i++) { if(T[lastT+1]==S[i]) { match(S,T,i,lastT+1,result); } } }};
2. dynamic programming:
t[i][j]=the number of distinct subsequences of string T of length i in string S of length j. So finally the program returns t[t.length][s.length]
If T[i]!=S[j], then t[i][j]=the number of distinct subsequences of string T of length i in string S of length j-1=t[i][j-1] (the left item in the matrix)
If T[i]==S[j], then t[i][j]=the number of distinct subsequences of string T of length i in string S of length j-1 + the number of distinct subsequences of string T of length i-1 in string S of length j-1 = t[i][j-1] + t[i-1][j-1] (the left item in the matrix+the left up item)
class Solution {public: int numDistinct(string S, string T) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<vector<int>> t(T.length()+1,vector<int>(S.length()+1)); for(int i=0;i<=T.length();i++) t[i][0]=0; for(int i=0;i<=S.length();i++) t[0][i]=0; for(int i=1;i<=S.length();i++) { if(T[0]==S[i-1]) t[1][i]=t[1][i-1]+1; else t[1][i]=t[1][i-1]; } for(int i=2;i<=T.length();i++) { for(int j=1; j<=S.length();j++) { if(T[i-1]==S[j-1]) t[i][j]=t[i-1][j-1]+t[i][j-1]; else t[i][j]=t[i][j-1]; } } return t[T.length()][S.length()]; }};
- 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
- G-Wan Webserver 初探
- [study] BinarySearchTree class in Java
- Interactive Python:Mini-project # 7 - Spaceship
- VS2010 C++学习(4):WinSock域名查询解析
- Locale类之“中国”和“中文”
- [LeetCode] Distinct Subsequences
- 使用ec-perl
- Binary Search Tree--find Lowest Common Ancestor--C++ and Java
- 你是一个压力型程序员?还是?
- 知识点汇总
- 淘宝API开发系列---淘宝API的测试及使用
- IIS配置Asp.net时,出现“未能加载文件或程序集“System.Web.Extensions.Design, Version=1.0.61025.0”(已解决!)
- js验证表单也存在中文乱码
- php 中autoload机制