SDUT2772数据结构实验之串一:KMP简单应用
2016-08-03 19:43
232 查看
#include<stdio.h> #include<string.h> void get_nextval(char pattern[],int next[]) { int j=0,k=-1; next[0]=-1; while(pattern[j]!='\0') { if(k==-1||pattern[j]==pattern[k]) { j++; k++; next[j]=k; } else k=next[k]; } } int kmp(char text[],char pattern[]) { if(text[0]=='\0'||pattern[0]=='\0')return -1; int len=strlen(pattern); int next[len+1]; get_nextval(pattern,next); int index=0,i=0,j=0; while(text[i]!='\0'&&pattern[j]!='\0') { if(text[i]==pattern[j]) { i++; j++; } else { index+=j-next[j]; if(next[j]!=-1) j=next[j]; else { j=0; i++; } } } if(pattern[j]=='\0') return index+1; else return -1; } int main() { char a[1000010]; char b[1000010]; int j; while(scanf("%s",a)!=EOF) { scanf("%s",b); printf("%d\n",kmp(a,b)); } }
相关文章推荐
- POJ 2406 kmp简单应用
- SDUTOJ KMP简单应用 【KMP】
- 【2772】KMP的简单应用 sdutOJ
- SDUTOJ 2772 KMP简单应用
- SDUTOJ 2772--KMP简单应用
- poj 2406 还是KMP的简单应用
- KMP简单应用
- KMP的简单应用(SDUT 2772)
- KMP简单应用
- poj--3080Blue Jeans KMP的简单应用
- 寒假训练--KMP--KMP简单应用
- kmp简单应用
- KMP简单应用
- KMP - 简单应用
- poj2752—kmp的next数组的简单应用
- KMP简单应用
- KMP简单应用
- KMP简单应用
- KMP简单应用
- (KMP 1.1)hdu 1711 Number Sequence(KMP的简单应用——求pattern在text中第一次出现的位置)