题目
思路
这道题就把两个字符串都复制一遍然后 O ( n 2 ) O(n^2) O(n2),
当然,还需要不断查找和维护最大值,所以总时间复杂度是大于 O ( n 2 ) O(n^2) O(n2) 的。
代码
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<cmath>
using namespace std;
string ss,s,ans_str;
int ans;
int main()
{
cin>>s>>ss;
s=s+s,ss=ss+ss;
for(int i=0; i<=s.size()-1; i++)
for(int j=0; j<=ss.size()-1; j++)
{
if(s[i]==ss[j])
{
int k=i,w=j;
while(s[k]==ss[w]&&k<s.size()&&w<ss.size())
k++,w++;
if(k-i>ans)
ans=k-i;
}
}
cout<<ans;
return 0;
}
/*ABCEFAGADEGKABUVKLM MADJKLUVKL*/