hdu 2594 Simpsons’ Hidden Talents
2013-04-11 13:56
225 查看
求一个字符串的最长后缀出现在一个字符串的前缀
KMP算法,主要是求next[]函数;
KMP算法,主要是求next[]函数;
#include<stdio.h> #include<string.h> char s1[50002],s2[50002]; int next[50002]; void get() { int len=strlen(s1); int j,i; j=-1;i=0;next[0]=-1; while(i!=len) { if(j==-1||s1[i]==s1[j]) { next[++i]=++j; } else j=next[j]; } } int KMP() { int i,j; int len2; j=0;i=0; len2=strlen(s2); while(i!=len2)//以i之后的为后缀与s1的前缀比较 { if(s2[i]==s1[j])//匹配成功 { i++;j++; } else //匹配不成功 { j=next[j]; if(j==-1){j=0;i++;}//只有next[0]=-1,所以j=0; } } return j; } int main() { int i,j; while(scanf("%s",s1)!=-1) { scanf("%s",s2); get(); i=KMP(); if(i<=0) puts("0"); else { for(j=0;j<i;j++) { printf("%c",s1[j]); } printf(" %d\n",i); } } return 0; }
相关文章推荐
- hdu 2594 Simpsons’ Hidden Talents
- HDU 2594 Simpsons’ Hidden Talents(KMP,next数组的应用)
- HDU 2594 Simpsons’Hidden Talents(KMP)
- HDU 2594 Simpsons’ Hidden Talents
- hdu 2594 Simpsons’ Hidden Talents(KMP)
- HDU 2594 Simpsons’ Hidden Talents(s1的前缀是s2的后缀)
- Simpsons’ Hidden Talents - HDU 2594(求相同的前缀后缀)
- hdu 2594 Simpsons’ Hidden Talents
- HDU——T 2594 Simpsons’ Hidden Talents
- HDU_2594 Simpsons’ Hidden Talents
- HDU 2594 Simpsons’ Hidden Talents(KMP)
- HDU 2594 Simpsons’ Hidden Talents (KMP的F数组应用)
- HDU 2594 (简单KMP) Simpsons’ Hidden Talents
- HDU - 2594 Simpsons’ Hidden Talents(KMP)
- hdu 2594 Simpsons’ Hidden Talents(KMP)
- hdu 2594 Simpsons’ Hidden Talents
- hdu 2594Simpsons’ Hidden Talents
- HDU 2594 Simpsons’ Hidden Talents(KMP理解应用)
- HDU 2594 Simpsons’ Hidden Talents
- HDU 2594 Simpsons’ Hidden Talents (KMP)