博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hihoCoder #1015 : KMP算法
阅读量:5750 次
发布时间:2019-06-18

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

 

 
输入

第一行一个整数N,表示测试数据组数。

接下来的N*2行,每两行表示一个测试数据。在每一个测试数据中,第一行为模式串,由不超过10^4个大写字母组成,第二行为原串,由不超过10^6个大写字母组成。

其中N<=20

输出

   对于每一个测试数据,按照它们在输入中出现的顺序输出一行Ans,表示模式串在原串中出现的次数。

样例输入 

5

HA
HAHAHA
WQN
WQN
ADA
ADADADA
BABABB
BABABABABABABABABB
DAD
ADDAADAADDAAADAAD 

样例输出  

3

1
3
1

实现代码如下:

#include
#include
using namespace std;int sum;//用来记录出现过这样的子串的次数int GetNext(string t,int *next);void KMPmatch(string s,string t);int main(){ string s,t;//t模式串,s原串 int n; cin>>n; while(n--){ cin>>t>>s; sum=0; KMPmatch(s,t); cout<
<

每完整匹配一次成功后,就让j=next[j],为什么这么做,我们通过一个例子就知道。

假设有一个原串S:CABABABDBA,模式串T:ABAB,现在来寻找模式串T在原串S中出现的次数。

 

 

 

 

转载于:https://www.cnblogs.com/wrj2014/p/4142617.html

你可能感兴趣的文章
EdbMails Convert EDB to PST
查看>>
POJ 2184
查看>>
大话 程序猿 眼里的 接口
查看>>
struts2用了哪几种模式
查看>>
replace函数结合正则表达式实现转化成驼峰与转化成连接字符串的方法
查看>>
ubuntu 初学常用命令
查看>>
WCF客户端与服务端通信简单入门教程
查看>>
判断是否含有中文
查看>>
linux文件权限与属性的更改
查看>>
android 资源种类及使用
查看>>
Explorer程序出错
查看>>
log4j2性能剖析
查看>>
修改系统时间 ubuntu
查看>>
Centos7同时运行多个Tomcat
查看>>
使用CocoaPods过程中的几个问题
查看>>
我的友情链接
查看>>
mysql数据类型---数值型---int
查看>>
为eclipse安装maven插件
查看>>
公司新年第一次全员大会小记
查看>>
最懒的程序员
查看>>