这样的题目会不会好很多?
- 题目描述
有两个由字符构成的环。
请写一个程序,计算这两个字符环上最长连续公共字符串的长度。
例如,字符串 ABCEFAGADEGKABUVKLM 的首尾连在一起,构成一个环;字符串 MADJKLUVKL 的首尾连在一起,构成另一个环;UVKLMA 是这两个环的一个连续公共字符串。- 输入格式
一行,包含两个字符串,分别对应一个字符环。这两个字符串之间用单个空格分开。字符串长度不超过 ,且不包含空格等空白符。- 输出格式
输出一个整数,表示这两个字符环上最长公共字符串的长度。- 样例输入
ABCEFAGADEGKABUVKLM MADJKLUVKL- 样例输出
6
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
string s, c1, c2, cnt;
int main() {
getline(cin, s);
cin >> c1 >> c2;
// c1 = c1 + " ";//没错,还可以这样加,可惜没用上。
// c2 = c2 + " ";
int l1 = c1.length(), l2 = c2.length();
int b = -1;
while(b) {
b = -1;//b = -1 时 ~b 为0
b = s.find(c1, 0);
if(~b) {//不为0说明有新的位置返回,存在c1 !
s.replace(b, l1, c2);//好用!
}
else break;
}
cout << s;
return 0;
}