如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也可以6和12为周期,结果取最小周期3)。字符串的长度小于等于100,输出它的最小周期。
思路:找出最小周期,首先分析周期的特殊性,即是字符串长度的约数,考虑遍历字符长度的约数,比较字符串找出符合条件的最小约数。(这里考虑如果字符串没有重复,则最小周期为字符的长度。)
/*
功能:计算字符串的最小周期。
原型:
intGetMinPeriod(char *string);
输入参数:
char * string:字符串。
返回值:
int 字符串最小周期。
*/
int GetMinPeriod(char *inputstring)
{
/*在这里实现功能*/
if(NULL== inputstring)
{
return0;
}
size_t len =strlen(inputstring);
for(size_ti = 1;i <= len;i++)
{
if(0== len % i)
{
size_tj;
for(j = 1;j < len/i;j++)
{
if(0 != strncmp(inputstring,inputstring + i * j,i))
{
break;
}
}
if( j>= len/i)
{
return (int)i;
}
}
}
return0;
}