方法一:
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <iomanip>
#include <algorithm>
using namespace std;
int main()
{
int n;
while(cin>>n&&n!=0)
{
while(n--)
{
string s;cin>>s;
int len=s.length();
for(int i=1;i<=len;i++)
{
string a,b;
if(len%i==0)
{
int k;
for (k=i;k<len;k++)
if(s[k]!=s[k%i])
break;
if(k==len)
{
cout<<i<<endl; break;
}
}
}
cout<<endl;
}
}
return 0;
}
方法二:
substr有2种用法:
假设:string s = "0123456789";
string sub1 = s.substr(5); //只有一个数字5表示从下标为5开始一直到结尾:sub1 = "56789"
string sub2 = s.substr(5, 3); //从下标为5开始截取长度为3位:sub2 = "567"
/*#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <iomanip>
#include <algorithm>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
while(n--)
{
string s;
cin>>s;
int len=s.length();
int flag=1;
for(int i=1;i<len;i++)
{
string a,b;
if(len%i==0)
{
b=s.substr(0,i);//截取字符串;
int t=len/i;
for(int j=0;j<t;j++)
{
a=a+b;
}
if(a==s)
{
flag=0;
cout<<i<<endl;
break;
}
}
}
if(flag==1){cout<<len<<endl;}
cout<<endl;
}
}
return 0;
}