一个字符串,它是由某个字符串不断自我连接形成的。但是这个字符串是不确定的,现在只想知道它的最短长度是多少。
#include <iostream>
using namespace std ;
const int N=1e6+1;
char a[N];
int n,p[N];
void init(){
int i,j=0;
for(i=1;i<n;i++){
while(j>0&&a[i+1]!=a[j+1]) j=p[j];
if(a[i+1]==a[j+1]) j++;
p[i+1]=j;
}
}
int main(){
cin>>n>>a+1;
init();
cout<<n-p[n];
}