一道很简单的题目,主要是熟悉一下查字符串的操作,后面还会有一个KMP算法的。
#include <iostream>
#include <string.h>
#include <cstdio>
#include <map>
using namespace std;
char s[100];
char tmp[100];
map<char, bool> mp;
int n;
int main()
{
scanf("%d", &n);
while (n--)
{
scanf("%s", s);
int len = strlen(s);
for (int k, i = 1; i <= len; ++i)//枚举周期串的长度
if (len % i == 0)//只有可以整除长度的i才可能是周期串长度
{
for (k = i; k < len; ++k)//因为字符串是从0开始,所以这里直接
//从周期串长度开始就行,然后m模i的话
//就是0-(i-1)了,如果字符数组是从1开
//始的话模完就需要+1了
if (s[k] != s[k % i])
break;//有不一样的马上退出
if (k == len)//如果到结尾了都一样,那么肯定是最小的(从小开始枚举的)
{
printf("%d\n", i);
break;
}
}
if (n)
puts("");
}
return 0;
}