分析:
题意为求出A串的前缀和B串的后缀或A串的后缀和B串的前缀相等的最长的个数。
用map容器把AB的前缀最统计出来,然后再用AB的后缀去匹配就可以了。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int ans=INT_MIN;
string a,b;
map<string,int> m1,m2;
cin>>a>>b;
//a串的前缀
for(int i=1;i<=a.length();i++)
{
string sub=a.substr(0,i);
m1[sub]=i;
}
//b串的前缀
for(int i=1;i<b.length();i++)
{
string sub=b.substr(0,i);
m2[sub]=i;
}
//b串后缀和a串前缀是否相等
for(int i=1;i<=b.length();i++)
{
string sub=b.substr(b.length()-i,i);
if(m1[sub]!=0) ans=ans<i?i:ans;
}
//a串后缀和b串前缀是否相等
for(int i=1;i<=a.length();i++)
{
string sub=a.substr(a.length()-i,i);
if(m2[sub]!=0) ans=ans<i?i:ans;
}
cout<<ans<<endl;
}