1. 程式人生 > >演算法競賽入門經典(第二版)第三章陣列和字串習題3-4週期串

演算法競賽入門經典(第二版)第三章陣列和字串習題3-4週期串

如果一個字串可以由某個長度為k的字串重複多次得到,則稱該串以k為週期。例如abcabcabc以3為週期(注意,它也以6和12為週期)。輸入一個長度不超過80的字串,輸出其最小週期

#include<stdio.h>
int main()
{
    char a[100];
    int len;
    int b=0;//判斷變數
    int k;
    scanf("%s",a);
    len=strlen(a);
    for(k=1;k<=len&&b==0;k++)
    {
        if(len%k!=0)//判斷能否取週期
            continue
; b=1; for(int i=1;i<(len/k);i++)//分成每段來驗證 { for(int j=0;j<k;j++)//每段驗證 { if(a[i*k+j]!=a[j]) {b=0;break;} } if(b) break; } } printf("%d\n",k-1);//最後迴圈中k++了一次所以要-1 }