题目描述
有两个由字符构成的环。请写一个程序,计算这两个字符环上最长连续公共字符串的长度。例如,字符串
ABCEFAGADEGKABUVKLM
的首尾连在一起,构成一个环;字符串
MADJKLUVKL
的首尾连在一起,构成一个另一个环;
UVKLMA
是这两个环的一个连续公共字符串。
一行,包含两个字符串,分别对应一个字符环。这两个字符串之间用单个空格分开。字符串长度不超过 500,且不包含空格等空白符。
输出格式输出一个整数,表示这两个字符环上最长公共字符串的长度。
样例样例输入
ABCEFAGADEGKABUVKLM MADJKLUVKL
样例输出
6
数据范围与提示
分类标签
[字符串] [字符数组] [枚举] [普及-]
C++题解代码
#include <bits/stdc++.h>
using namespace std;
string a;
string b;
int c;
int d;
int e;
int f;
int g;
int h;
// The main procedure
int main() {
cin>>a;
cin>>b;
g = a.size();
h = b.size();
c = 0;
a += a;
b += b;
for (int i = 0; i < g; i++) {
for (int j = 0; j < h; j++) {
d = 0;
while ((a[(d+i)] == b[(d+j)]) && ((d < g) && (d < h))) {
d++;
}
if (d > c) {
c = d;
}
}
}
cout<<c;
return 0;
}
Blockly题解代码图片