问题描述 :
现代诗如蚯蚓
断成好几截都不会死
字符串断成好几截
有可能完全一样
请编写程序
输入字符串
输出该字符串最多能断成多少截完全一样的子串
样例输入
abcabcabcabc
样例输出
4
样例说明
最多能断成四个”abc”,也就是abc重复四遍便是原串
同时也能断成两个”abcabc”
最坏情况是断成一个原串”abcabcabcabc”
输入说明 :
一行,一个字符串
字符串长度<=1000
输出说明 :
一行,一个正整数表示该字符串最多能断成的截数
输入范例 :
abcdabcabcabc
输出范例 :
1
完整C++代码
还算简单的
#include <bits/stdc++.h>
using namespace std;
// 判断s是否由num个相同子串构成
int isN(string s, int num) {
int len = s.size(), i = 0;
if (len / num * num != len) return 0;
while (i + num < len) {
if (s.substr(i, num) != s.substr(i + num, num)) {
return 0;
}
i += num;
}
return 1;
}
int main()
{
string s;
cin >> s;
int n = 0, len = s.size();
for (int i = 1; i <= s.size(); i++) {
if (isN(s, i)) {
// 找到一个,直接退出
n = i;
break;
}
}
cout << len / n << endl;
return 0;
}
😋欢迎大伙私信或者评论区交流讨论😋