博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Leetcode] Distinct Subsequences 解题报告
阅读量:6305 次
发布时间:2019-06-22

本文共 1463 字,大约阅读时间需要 4 分钟。

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.

A DP problem.
[解题方法]  
此题需要使用大数运算。使用一点 DP 即可。关键是如何得到递推关系,可以这样想,设母串的长度为 j,  
子串的长度为 i,我们要求的就是长度为 i 的字串在长度为 j 的母串中出现的次数,设为 t[i][j],若母串的最后一个字符与子串的最后一个字符不同,则长度为 i 的子串在长度为 j 的母串中出现的次数就是母串的前 j - 1 个字符中子串出现的次数,即 t[i][j] = t[i][j - 1],若母串的最后一个字符与子串的最后一个字符相同,那么除了前 j - 1 个字符出现字串的次数外,还要加上子串的前 i - 1 个字符在母串的前 j - 1 个字符中出现的次数,即 t[i][j] = t[i][j - 1] + t[i - 1][j - 1]。  
也可以用二维数组,这里图省事,直接用滚动数组了。

Code如下:
1:  int numDistinct(string S, string T) {  2:      // Start typing your C/C++ solution below  3:      // DO NOT write int main() function  4:      int match[200];  5:      if(S.size() < T.size()) return 0;  6:      match[0] = 1;  7:      for(int i=1; i <= T.size(); i++)  8:        match[i] = 0;  9:      for(int i=1; i<= S.size(); i ++)  10:        for(int j =T.size(); j>=1; j--)  11:          if(S[i-1] == T[j-1])  12:            match[j]+= match[j-1];  13:      return match[T.size()];  14:    }
已犯错误:
1. line 7,  应该是i<=T.size(), 因为把0作为边界使用了。
2. line 10, j应该从尾到头,因为每次要使用上一次loop的值。如果从头往尾扫的话,重复计算了。

转载于:https://www.cnblogs.com/codingtmd/archive/2012/12/20/5079011.html

你可能感兴趣的文章
python购物车
查看>>
解决python2和python3的pip冲突
查看>>
面试/编程
查看>>
linux每日命令(16):head命令
查看>>
公司内部分享【富有成效的每日站会】总结
查看>>
打造一个上传图片到图床利器的插件(Mac版 开源)
查看>>
iOS横竖屏
查看>>
thinkphp判断更新是否成功
查看>>
Do While ... Loop 与 Do Until ... Loop 的区别
查看>>
【Linux】查询某个字符串出现次数
查看>>
高效使用jquery之一:请使用'On'函数
查看>>
冲刺第一周第三天
查看>>
ERP环境检测工具设计与实现 Environment Detection
查看>>
不要在构造中做太多事情,不然有时候会出现有意思的代码~
查看>>
IIS 发布网站遇到的问题
查看>>
NuGet学习笔记(2)——使用图形化界面打包自己的类库
查看>>
xcode中没有autoSizing的设置
查看>>
字符编码
查看>>
企业应用:应用层查询接口设计
查看>>
浅谈Excel开发:十 Excel 开发中与线程相关的若干问题
查看>>