原题:
算法提高 现代诗如蚯蚓
时间限制:1.0s 内存限制:256.0MB
问题描述
现代诗如蚯蚓
断成好几截都不会死
字符串断成好几截
有可能完全一样
请编写程序
输入字符串
输出该字符串最多能断成多少截完全一样的子串
输入格式
一行,一个字符串
输出格式
一行,一个正整数表示该字符串最多能断成的截数
样例输入
abcabcabcabc
样例输出
4
样例说明
最多能断成四个”abc”,也就是abc重复四遍便是原串
同时也能断成两个”abcabc”
最坏情况是断成一个原串”abcabcabcabc”
数据规模和约定
字符串长度<=1000
分析:
字符串从1个字符到str.length()/2个字符试探,通过substr函数截取等长的字符串,并判断是否相同,如果全部相同,输出str.length()/i,如果有一个不同继续下一次循环。如果直到len/2个字符都没有相同的,直接输出1。
代码:
#include <iostream>
using namespace std;
int main()
{
string str;
cin>>str;
int num ,temp = 0,len = str.length();
for(int i = 1;i <= len / 2;i++)
{
if(len % i != 0)
continue;
string t = str.substr(0,i);
int tag = 0;
for(int j = i;j < len;j += i)
{
if(t != str.substr(j,i))
{
tag = 1;
break;
}
}
if(tag == 0)
{
cout<<len/i;
return 0;
}
}
cout<<1;
return 0;
}