您的位置:首页 > 其它

hdu 2594 Simpsons’ Hidden Talents(KMP)

2016-05-14 13:59 567 查看
传送门

#include <stdio.h>
#include <string.h>
char s[100020],t[50010];
int next[100020];
int main()
{
int i,j,len,jlens,jlent;
while(scanf("%s %s",s,t) != EOF)
{
jlens = strlen(s);
jlent = strlen(t);
strcat(s,t);//连接字符串
len = strlen(s);
i = 0;
j = -1;
next[0] = -1;
while(i < len)
{
if(j == -1 || s[i] == s[j])
{
++i;
++j;
next[i] = j;
}
else
j = next[j];
}
while(next[len] > jlens || next[len] > jlent)//判断字符串长度是否合适
len = next[len];
len = next[len];
for(i = 0; i < len; ++i)
printf("%c",s[i]);
if(len) printf(" ");
printf("%d\n",len);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: