这题首先要判断对于长度为len的字符串其可能取得的周期,由小到大判断长度的因子是否为周期即可
//AC.
#include <iostream>
#include <cstdio>#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
int main()
{
int t;
scanf("%d\n\n",&t);
while(t--)
{
int len;
char a[85],b[85];
memset(b,'\0',sizeof(b));
scanf("%s",a);
if(t!=0) getchar();
len = strlen(a);
for(int i=1;i<=len;i++)
{
if(len%i==0) //判断 i 是否为因子
{
int j;
for(j=0;j+i<len;j++)
{
if(a[j%i]!=a[j+i]) //以前 i +1 个为基准循环判断直到完全匹配
break;
}
if(j+i==len)
{
printf("%d\n",i);
break;
}
}
}
if(t!=0)
printf("\n");
}
return 0;
}
本文介绍了一种用于判断字符串周期性的算法实现。通过遍历字符串长度的所有因子,检查是否每个因子都符合周期性条件。文章提供了完整的C++代码示例,展示了如何有效地找出最短的重复周期。
424

被折叠的 条评论
为什么被折叠?



