3692. 最长连续公共子序列 - AcWing题库https://www.acwing.com/problem/content/3695/
输入两个字符串 s1,s2。
输出最长连续公共子串长度和最长连续公共子串。
输入格式
一行,两个字符串 s1,s2,用空格隔开。
输出格式
第一行输出最长连续公共子串的长度
第二行输出最长连续公共子串。如果不唯一,则输出 s1 中的最后一个。
数据范围
1≤|s1|,|s2|≤100
数据保证至少存在一个连续公共子串。
输入样例:
abcdefg qwercdefiok
输出样例:
4
cdef
#include<iostream>
#include<string>
using namespace std;
int main(){
string s1,s2,t,t1,t2,sub;
int length=0;
cin>>s1>>s2;
if(s1.length()>s2.length()){
t=s1;
s1=s2;
s2=t;
}//s1存放较短的串
for(int i=0;i<s1.length();i++){
for(int j=1;j<=s1.length()-i;j++){
t1=s1.substr(i,j);//s1的所有子串
//查找s2中是否有t1匹配
for(int i=0;i<=s2.length()-j;i++){
t2=s2.substr(i,j);
if(t1==t2&&t1.length()>=length) sub=t1,length=t1.length();
}
}
}
cout<<length<<endl;
cout<<sub<<endl;
return 0;
}