还是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,感觉我终于有出息了啊!