演算法競賽入門經典(第二版)第三章陣列和字串習題3-4週期串
阿新 • • 發佈:2018-11-04
如果一個字串可以由某個長度為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
}