博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Distinct Subsequences
阅读量:4937 次
发布时间:2019-06-11

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

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.

 

接受了Edit Distance的教训,该用了vector<vector<int> >勉强过了大数据。f[i][j]表示S[i]和T[j]相同的情况下,产生的情况个数。

最后sum(f[i][T.size()]), 0<= i <= S.size(),就是结果了。

1 class Solution { 2 public: 3     int numDistinct(string S, string T) { 4         // Start typing your C/C++ solution below 5         // DO NOT write int main() function 6         vector
> f(S.size()+1, vector
(T.size()+1)); 7 8 f[0][0] = 1; 9 for(int i = 1; i <= S.size(); i++)10 f[i][0] = 0;11 12 for(int i = 1; i <= T.size(); i++)13 f[0][i] = 0;14 15 for(int i = 1; i <= S.size(); i++)16 for(int j = 1; j <= T.size(); j++)17 if (S[i-1] == T[j-1])18 {19 f[i][j] = 0;20 for(int k = 0; k < i; k++)21 f[i][j] += f[k][j-1];22 }23 else24 f[i][j] = 0;25 26 int sum = 0;27 for(int i = 0; i <= S.size(); i++)28 sum += f[i][T.size()];29 30 return sum;31 }32 };

转载于:https://www.cnblogs.com/chkkch/archive/2012/11/06/2757687.html

你可能感兴趣的文章
面向对象进阶
查看>>
windows下mysql的安装
查看>>
XPBS遇到“Unable to access /var/run/munge/munge.socket.2: no such file or directory”错误的解决办法...
查看>>
把字符串转换成整数
查看>>
9.4/9.5 sed
查看>>
POJ 3280 —— Cheapest Palindrome
查看>>
REST和SOAP区别
查看>>
记一次WinForm中屏蔽空格键对按钮的作用
查看>>
数据库同步中差异数据捕获方案设计与实现
查看>>
安卓开发中全局变量的创建
查看>>
让进程在后台可靠运行的几种方法
查看>>
Centos6.2设置静态ip和dns
查看>>
Ubuntu系统较全面清理
查看>>
个人总结-8-重新写注册和登录界面
查看>>
冲刺2-5
查看>>
jQuery常用方法(三)-jQuery Ajax
查看>>
javascript之Publish/Subscribe模式
查看>>
Vivado_MicroBlaze_问题及解决方法_汇总(不定时更新)
查看>>
Microsoft Azure Storage Explorer
查看>>
java step1:基础知识2
查看>>