給你一個字元串,它是由某個字元串不斷自我連接配接形成的。 但是這個字元串是不确定的,現在隻想知道它的最短長度是多少.
這道題有大bug,提示亂寫,其實樣例循環節為“cab”。這題跟poj 2406很像,隻不過poj要求全部循環,而這題隻要求部分就行。
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
char s[];
int p[];
int main()
{
int n;
scanf("%d",&n);
scanf("%s",s+);
p[]=;int j=;
for(int i=;i<=n;i++)
{
while(j> && s[i]!=s[j+])j=p[j];
if(s[i]==s[j+])j++;
p[i]=j;
}
printf("%d\n",n-p[n]);
return ;
}