KMP 模板
2016-05-07 13:25
239 查看
#include <cstdio> #include <cstring> #include <cctype> #include <cmath> #include <set> #include <map> #include <list> #include <queue> #include <deque> #include <stack> #include <string> #include <bitset> #include <vector> #include <iostream> #include <algorithm> #include <stdlib.h> using namespace std; typedef long long LL; const int INF=2e9+1e8; const int MOD=1e9+7; const int MAX_SIZE=1005; void set_kmp_next(int *kmp_next,int len,string& b) { int i=0,j=-1; kmp_next[0]=-1; while(i<len) { if(j==-1||b[i]==b[j]) { i++; j++; kmp_next[i]=j; } else j=kmp_next[j]; } } int kmp(string &a,string& b) // a 为原串 ,b 为模式串 { int i,j,lena=a.size(),lenb=b.size(); int kmp_next[MAX_SIZE]; set_kmp_next(kmp_next,lenb,b); i=j=0; while(i<lena) { if(j==-1||a[i]==b[j]) { i++; j++; } else j=kmp_next[j]; if(j==lenb) return i-j+1; } return -1; } int main() { string a,b; while(cin>>a>>b) { cout<<kmp(a,b)<<endl; } return 0; }
相关文章推荐
- KMP 模板
- 线性分类器
- Separate mobile site
- 无障碍开发系列之开发建议
- Linux下SPI和IIC驱动免在设备树上添加设备信息的编写方法
- 杭电oj~~2008
- 十六进制颜色及其对应的名称
- javascript的三个组成部分
- 无障碍开发系列之WAI-ARIA
- 漫谈linux文件IO
- ARM ASM Conditional Execution
- 给 Android 开发者的 RxJava 详解
- Adaptive design
- iframe高度100%,自适应高度
- IOS开发:截取当前视图
- Android 应用程序发布流程---碗豆荚发布流程
- 104. Maximum Depth of Binary Tree [easy] (Python)
- Memory Barriers ,cache-coherency
- 无障碍开发系列之事件统一
- CodeForces 670E Correct Bracket Sequence Editor