Description
给你一个字符串,它是由某个字符串不断自我连接形成的。 但是这个字符串是不确定的,现在只想知道它的最短长度是多少.
【题目分析】
简单的KMP水题,只需要输出l-next[l]就可以了。
【代码】
#include<cstdio>
#include<cstring>
char s[1000010];
int next[1000010];
int main()
{
int i,j,k,m,n,p,q,x,y,z,l;
scanf("%d%s",&l,s+1);
for (i=2,j=0;i<=l;i++)
{
while (j&&s[i]!=s[j+1]) j=next[j];
if (s[i]==s[j+1]) j++;
next[i]=j;
}
printf("%d\n",l-next[l]);
}