模拟法,看着比较直观,可以和65题通用,先得出子序列的位置信息,然后输出长度
#include<bits/stdc++.h>
using namespace std;
int main(){
string a,b;
while(cin>>a>>b){
int len1=0,len2=0,k,t;//k,t用来记录i和j
if(a.size()>=b.size()){
//从b开始遍历
len1 = 0;
k=0,t=-1;
for(int i=0;i<b.size();i++){
for(int j=i;j<b.size();j++){
int c=a.find(b.substr(i,j-i+1));
if(c>=0)//存在则更新
len2 = j-i+1;
if(len2>len1){
len1=len2;
k=i;
t=j;
}
}
}
cout<<b.substr(k,t-k+1).size()<<endl;
}
else{
//从a开始遍历
len1 = 0;
k=0,t=-1;
for(int i=0;i<a.size();i++){
for(int j=i;j<a.size();j++){
int c=b.find(a.substr(i,j-i+1));
//int d=b.rfind(a.substr(i,j-i+1));
if(c>=0)//存在则更新
len2 = j-i+1;
if(len2>len1){
len1=len2;
k=i;
t=j;
}
}
}
cout<<a.substr(k,t-k+1).size()<<endl;
}
}
return 0;
}