Description
现代诗如蚯蚓
断成好几截都不会死
字符串断成好几截
有可能完全一样
请编写程序
输入字符串
输出该字符串最多能断成多少截完全一样的子串
Input
一行,一个字符串
Output
一行,一个正整数表示该字符串最多能断成的截数
Sample Input 1
abcabcabcabc
Sample Output 1
4
Hint
HINT:时间限制:1.0s 内存限制:256.0MB
最多能断成四个”abc”,也就是abc重复四遍便是原串
同时也能断成两个”abcabc”
一个小思路或者说解释:
这个题一开始我很疑惑它到底是指一个字符串里找出几个相同的字串还是怎样,然后事实证明它是指一个字符串是由几个完全相同的字符串组成的,abcabcabce这种是不行的,多了个e就怎么拆都不行。
所以解题思路就是在输入字符串之后,把字符串的长度保存下来,找到能被字符串长度整除的数,从原字符串中截取出这个长度,然后与n倍该长度处做比对,比到末尾了都是一样的就是一种拆法,把n存下来最后比个大小输出就行:
通关代码:
#include<bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
int sum = 0;
int num = s.length();
for (int i = num - 1; i > 0; i--) {
int flag = 1;
if (num % i == 0) {
string s1 = s.substr(0, num / i);
for (int j = 1; j < i; j++) {
string s2 = s.substr((num / i) * j, num / i);
if (s1 != s2) {
flag = 0;
break;
}
}
if (flag) {
sum = max(sum, i);
}
}
}
cout << sum << endl;
return 0;
}