还是KMP算法,有些借鉴,但是更好地理解了这种写法。
1 #include <stdio.h> 2 #include <string.h> 3 int next[1000005]; 4 char T[1000005]; 5 int main() 6 { 7 int i,j,len; 8 while(scanf("%s",T)) 9 { 10 if(!strcmp(T,".")) 11 break; 12 i=0;j=-1; 13 len = strlen(T); 14 next[0] = -1; 15 while(i < len) 16 if(j == -1 || T[i]==T[j]) 17 { 18 i++;j++; 19 if(T[i] != T[j]) 20 next[i] = j; 21 else 22 next[i] = next[j]; 23 } 24 else j = next[j]; 25 i = len - j; 26 if(len % i == 0) 27 printf("%d\n",len/i); 28 else printf("1\n"); 29 } 30 return 0; 31 }
突然发现做了这一题以后我的日均做题量就达到了1,感觉我终于有出息了啊!