题目描述:
输入两个字符串 s1,s2。
输出最长连续公共子串长度和最长连续公共子串。
输入格式
一行,两个字符串 s1,s2用空格隔开。
输出格式
第一行输出最长连续公共子串的长度
第二行输出最长连续公共子串。如果不唯一,则输出 s1 中的最后一个。
数据范围
1≤ |s1|,|s2| |≤100
数据保证至少存在一个连续公共子串。
输入样例:
abcdefg qwercdefiok
输出样例:
4
cdef
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
string a,b;
string res;
cin >> a >> b;
for(int len = min( a.size(),b.size() );len;len -- ){
for(int i = a.size() - len;i >= 0;i --){
string s1 = a.substr(i,len);
for(int j = b.size() - len;j >= 0;j --){
string s2 = b.substr(j,len);
if(s1 == s2){
res = s1;
break;
}
}
if(res.size())break;
}
if(res.size())break;
}
cout << res.size() << endl;
cout << res << endl;
return 0;
}
直接暴力
注意substr的用法