3692
面试中除了排序问题,还会经常出现字符串的子序列问题。
以下是本题的
1.暴力枚举 O(n^4)
2.后缀数组 nlogn 难度较大 => 进阶课chap2数据结构
3.二分+字符串哈希+哈希表 nlogn 算法基础课 chap 1 chap2
#include <iostream>
#include <cstring>
#include <algorithm>
//枚举
using namespace std;
int main()
{
string a,b;
cin>> a >> b;
string res;
for(int len=min(a.size(),b.size()); len ; len-- )//倒着枚举
{
for(int i = a.size()-len; i >= 0; i -- )//枚举在第一个子串内的位置
{
for(int j = b.size()-len; j>= 0 ; j--)
{
string s1 = a.substr(i,len);
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;
}