题目大意
给你两个字符串环(以空格分隔),要你求俩环的最大公共子串长度。
解
环,串先复制粘贴一份到后面模拟环
借助c++自带函数。
代码
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
string s1, s2, s3;
int ans = 0, l1, l2;
int main(){
cin>>s1>>s2;
s1 = s1 + s1;
s2 = s2 + s2;
if(s1.size() < s2.size()){
//长在前
s3 = s1;
s1 = s2;
s2 = s3;
}
l1 = s1.size()/2;
l2 = s2.size()/2;
for(int i = l2; i > 0; --i){
//长度
for(int j = 0; j < l2; ++j){
//起始位置
s3 = s2.substr(j, i);
if(s1.find(s3, 0) != string::npos){
//找到
printf("%d", i); //输出
return 0;
}
}
}
printf("0");
}