输入两个字符串 s1,s2。
输出最长连续公共子串长度和最长连续公共子串。
输入格式
一行,两个字符串 s1,s2,用空格隔开。
输出格式
第一行输出最长连续公共子串的长度
第二行输出最长连续公共子串。如果不唯一,则输出 s1 中的最后一个。
数据范围
1≤|s1|,|s2|≤100
数据保证至少存在一个连续公共子串。
输入样例:
abcdefg qwercdefiok
输出样例:
4
cdef
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
string s1,s2,s6;
cin>>s1>>s2;//分别读取s1 s2
int ans1=0;//记录最大长度
string ans2;//记录最长串
for(int i=0;s1[i];i++)
{
for(int j=i;s1[j];j++)
{
string s3="";
for(int k=i;k<=j;k++)
{
s3+=s1[k];//遍历s1相当于生成了s1的所有子集,即所有可能的最长公共子串
}
if(s2.find(s3)!=-1&&ans1<=s3.size())//find函数如果没找到会返回-1
{
ans1=s3.size();
ans2=s3;
}
}
}
cout<<ans1<<endl<<ans2;
return 0;
}