关于c++字符串的一道练习题
给定字符串a与b,我们定义a*b为a与b的连结.比如:若a="abc",b="def",则有a*b="abcdef";同样,我们定义a^0=""(空串),以及(对于非负整...
给定字符串a与b,我们定义a*b为a与b的连结.比如: 若a = "abc",b = "def",则有a*b = "abcdef";同样,我们定义 a^0 = "" (空串),以及(对于非负整数n)a^(n+1) = a*(a^n).设计C++程序,要求完成如下功能:
输入:每行为一个可显示的字符串s;“.”为终止行内容。
输出:对每个字符串s,输出最大的n,使得对于某个字符串a有s = a^n.
Sample Input
abcd
aaaa
ababab
Sample Output
1
4
3
bdScan首先谢谢你的回答,不过程序报错,没查出是什么问题,您再帮忙看看. 展开
输入:每行为一个可显示的字符串s;“.”为终止行内容。
输出:对每个字符串s,输出最大的n,使得对于某个字符串a有s = a^n.
Sample Input
abcd
aaaa
ababab
Sample Output
1
4
3
bdScan首先谢谢你的回答,不过程序报错,没查出是什么问题,您再帮忙看看. 展开
展开全部
报错可能是因为main没加int返回类型的原因,已经加上了,仍然报错的话请检查编译器.我刚在vc6.0/vc2005/devc++三个编译器上测试了代码
可以验证
aabaaa 是3阶
aababcabcabc 是3阶
#include <iostream>
#include <string>
using namespace std;
int main()
{
string in;
cin >>in;
int max=1;
while(in.size())
{
int len=0;
while(++len<in.size())
{
int st=0,tmax=1;
while(st+2*len<=in.size()
&& in.substr(st,len)==in.substr(st+len,len))
st+=len,tmax++;
if(tmax>max)
max=tmax;
}
in.erase(0,1);
}
cout <<"最高阶:"<<max;
}
可以验证
aabaaa 是3阶
aababcabcabc 是3阶
#include <iostream>
#include <string>
using namespace std;
int main()
{
string in;
cin >>in;
int max=1;
while(in.size())
{
int len=0;
while(++len<in.size())
{
int st=0,tmax=1;
while(st+2*len<=in.size()
&& in.substr(st,len)==in.substr(st+len,len))
st+=len,tmax++;
if(tmax>max)
max=tmax;
}
in.erase(0,1);
}
cout <<"最高阶:"<<max;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询