标签:
next[]深入了解,做到这题才真正明白next[]的用法,希望后面的题目能理解的更深刻。
3 aaa abca abcde
0 2 5
1 #include<stdio.h> 2 #include<string.h> 3 char a[100001]; //要开够大小 4 int Next[100001]; 5 void getNext(int len){ 6 int i=0,j=-1; 7 Next[0]=-1; 8 while(i<len){ 9 if(j==-1||a[i]==a[j]){i++; j++; Next[i]=j; } 10 else j=Next[j]; 11 } 12 } 13 int main() 14 { 15 int n,cir,len; 16 scanf("%d",&n); 17 while(n--) 18 { 19 scanf("%s",a); 20 len=strlen(a); 21 getNext(len); 22 cir=len-Next[len]; //循环节 23 if(len!=cir&&len%cir==0) 24 printf("0\n"); 25 else 26 printf("%d\n",cir-len%cir); 27 } 28 return 0; 29 }
标签:
原文地址:http://www.cnblogs.com/Locked-J/p/4271196.html