题目描述
有两个由字符构成的环,请写一个程序,计算这两个字符环上最长公共字符串的长度。
例如:
字符串一:“ABCEFAGADEGKABUVKLM”的首尾连在一起,构成一个环;
字符串二:“MADJKLUVKL”的首尾连在一起,构成另一个环;
“UVKLMA”是这两个环的一个公共字符串。
输入格式
若干行,每行包括两个不包含空格的字符串。这两个字符串用空格分开。每个环上字符总数不超过255
输出格式
为每行输入,分别输出一个整数,表示这两个字符环上最长公共字符串的长度。最后一行没有输出。
输入输出样例
输入样例1:复制
ABCEFA24*92(GADEGKABUVKLM AD&30ijJKLAaUVKLM 313435t974 008bac
输出样例1:复制
6 0
【耗时限制】1000ms 【内存限制】128MB
#include <iostream>
#include <string>
#include <cstdio>
#include <algorithm>
using namespace std;
string s,s1,s2;
int main(){
while(cin>>s>>s1){
s+=s;
s1+=s1;
int f=0;
for(int j=s.size()/2;j>=1;j--){
for(int i=0;i<s.size()/2;i++){
s2=s.substr(i,j);
if(s1.find(s2)!=string::npos){
cout<<j<<endl;
f=1;
break;
}
}
if(f==1) break;
}
if(f==0) cout<<0<<endl;
}
return 0;
}