Description
现代诗如蚯蚓
断成好几截都不会死
字符串断成好几截
有可能完全一样
请编写程序
输入字符串
输出该字符串最多能断成多少截完全一样的子串
Input
一行,一个字符串
Output
一行,一个正整数表示该字符串最多能断成的截数
Sample Input 1
abcabcabcabc
Sample Output 1
4
Hint
HINT:时间限制:1.0s 内存限制:256.0MB
最多能断成四个”abc”,也就是abc重复四遍便是原串
同时也能断成两个”abcabc”
最坏情况是断成一个原串”abcabcabcabc”
解题:使用string结构里的成员函数substr()来快速解决这个问题。
#include <iostream>
using namespace std;
int main()
{
string str;
cin >> str;
int n = 1;
for (int i = 1; i <= str.size() / 2; i++) {
if (str.size() % i == 0) {
bool b = true;
//下面这段for循环的作用为两两对比被分成的字符串是否相同,分成的字符串全部相同即
//代表可以将原字符串分成str.size() / i 截 (i表示每截i个字母)
for (int j = 1; j < str.size() / i; j++) {
if (str.substr((j - 1) * i, i) != str.substr(j * i, i)) {
b = false;
break;
}
}
if (b) {
n = str.size() / i;
break; // 题目要求最多可以分成几截,i越小,截数越大(n)
}
}
}
cout << n;
return 0;
}