HDU1686 POJ3461 Oulipo KMP算法
来源:互联网 发布:免费已备案景安域名 编辑:程序博客网 时间:2024/06/09 22:52
题目大意:给你两个字符串,让你求出第一个字符串在第二个字符串中出现多少次。
分析:KMP算法,每次匹配成功时让计数器加1即可。
实现代码如下:
#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int MAX=1000010;const int MIN=10010;char T[MAX],W[MIN];int next[MIN];void init_next(){ int i=0,j=-1; int len=strlen(W); next[0]=-1; while(i<len) { if(j==-1||W[i]==W[j]) { i++; j++; next[i]=j; } else j=next[j]; }}int KMP(){ int i=0,j=0,lenw,lent; int sum=0; lenw=strlen(W); lent=strlen(T); while(i<lent) { if(j==-1||T[i]==W[j])//j==-1是T和W的第一个字符不相等,没这条语句会TLE; { j++; i++; } else j=next[j]; if(j==lenw) { j=next[j]; sum++; } } return sum;}int main(){ int t; cin>>t; while(t--) { scanf("%s%s",W,T); init_next(); printf("%d\n",KMP()); } return 0;}
0 0
- HDU1686 POJ3461 Oulipo KMP算法
- HDU1686:Oulipo KMP算法
- POJ3461 Oulipo KMP算法应用
- hdu1686 Oulipo(KMP)
- hdu1686 oulipo 【KMP】
- HDU1686 Oulipo(扩展KMP)
- hdu1686 Oulipo (KMP)
- hdu1686 Oulipo--KMP
- hdu1686 Oulipo kmp
- hdu1686 Oulipo【kmp】
- 【KMP】 poj3461 Oulipo
- 【KMP】Oulipo POJ3461
- poj3461 Oulipo (kmp)
- [POJ3461] Oulipo[KMP基础]
- poj3461 Oulipo,Kmp
- POJ3461 Oulipo 【KMP】
- POJ3461 Oulipo KMP
- poj3461-Oulipo(KMP)
- Android Root原理和流程分析
- 三种方式实现strlen函数
- 数据结构之线性表3单链表(动态单链表)
- __bridge_transfer其实是release
- const在C++中的内存分配
- HDU1686 POJ3461 Oulipo KMP算法
- 你相不相信有一种痛会到骨髓里
- iOS -- UIViewController 中的 willMoveToParentViewController和didMoveToParentViewController的使用
- 永远不要向任何人解释你自己
- 银行、证券行业云计算身份识别服务器深度开发
- 请忘记我还有心
- 为什么C/C++语言使用指针
- char varchar nchar nvarchar 四者的区别是什么(为何SQL Server自动给字符串末尾加空格)
- 局外人