解题思路
这道题就把两个字符串都复制一遍然后,不断查找和维护最大值,所以总时间复杂度是大于 O ( n 2 ) O(n^2 ) O(n2) 的。所以还是可以过
代码
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <iomanip>
#include <cmath>
using namespace std;
string a,b,x;
int ans,l1,l2;
int main(){
cin>>a>>b;
a=a+a,l1=a.size()-1;
b=b+b,l2=b.size()-1;
for(int i=0;i<l1;i++)
{
for(int j=1;j<=min(l1-i+1,min(l1,l2));j++)
{
x=a.substr(i,j);
if(b.find(x)!=-1)
ans=max(ans,j);
}
}
printf("%d",ans);
/*ABCEFAGADEGKABUVKLM MADJKLUVKL*/
}