题解 | #查找两个字符串a,b中的最长公共子串#
查找两个字符串a,b中的最长公共子串
https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506
#include <iostream>
#include <string.h>
#include <memory.h>
using namespace std;
int main() {
string s1,s2,s;
int t[310][310],len1,len2,i,j,ansx,ansl;
cin>>s1>>s2;
len1=s1.length();
len2=s2.length();
if(len1<len2){
s=s1;
s1=s2;
s2=s;
}
len1=s1.length();
len2=s2.length();
//cout<<s1<<endl<<s2;
ansl=0;
ansx=310;
memset(t,0,sizeof(t));
for(i=1;i<=len1;i++){
for(j=1;j<=len2;j++){
if(s1[i-1]==s2[j-1]){
t[i][j]=t[i-1][j-1]+1;
//cout<<i<<' '<<j<<' '<<t[i][j]<<endl;
if(t[i][j]>ansl||(t[i][j]==ansl&&j<ansx)){
ansl=t[i][j];
ansx=j;
}
}
}
}
//cout<<ansl<<' '<<ansx;
for(i=ansx-ansl;i<ansx;i++){
cout<<s2[i];
}
return 0;
}
// 64 位输出请用 printf("%lld")
妈妈我再懒得初始化我就去吃粑粑
海康威视公司福利 1139人发布
