给你一个字符串,请你判断将此字符串转化成a^n形式的最大的n是多少。
例如:
- abcd=(abcd)^1,则n=1;
- aaaa=a^4,则n=4;
- ababab=(ab)^3,则n=3。
- 输入共1行,包含一个长度不超过100的字符串,其中不存在空格等空白符
解题思路:首先思考如何进行解题,首先输入一个字符串,来求它的幂,那么就可以指定两个string类型的变量比如a,b来接受我们截取的字符串,可以通过循环来截取字符串,定义一个整型k=1,表示截取字符串的位数,首先可以截取字符串的第一个字符放在a中,然后在套用一个循环来截取字符串放在b中,然后加上一个计数器count=0 如果a=b 则count++ 如果a!=b 就退出循环然后k++,下一次来截取两个字符串,如此往复,代码如下
#include <iostream>
using namespace std;
int main()
{
string s;
cin>>s;
int len=s.length();//求字符串的长度
string a,b;
int k=1,count=0,i;//k是每次截取字符串的长度,count为计数器,当每次截取的字符串相等时++
for(i=0;i<len;i++)
{
int flag=1,cot=0;
s1=s.substr(0,k); //substr作用是截取字符串,0,k的意思是从0开始截取k个
for(int j=0;j<len;j+=k)//注意步长是k
{
s2=s.substr(j,k);
if(s2!=s1)
{
flag=0;
break;
}
else
count++;
}
if(flag)
{
cout<<count;
break;
}
if(k<len)
k++;
}
if(i==len)
cout<<1;
}
部分测试结果