题解 | #最长公共子串#
最长公共子串
http://www.nowcoder.com/practice/210741385d37490c97446aa50874e62d
//暴力解
#include<bits/stdc++.h>
using namespace std;
int main(){
string str1,str2;
cin>>str1>>str2;
int max=0,pos=-1;
int N=str1.size(),M=str2.size();
for(int i=0;i<N;i++){
for(int j=0;j<M;j++){
int count=0;
int x=i,y=j;
while(str1[x]==str2[y]&&x<N&&y<M){
count++;
x++;
y++;
}
if(count>max){
max=count;
pos=i;
}
}
}
if(pos==-1){
cout<<-1<<endl;
return 0;
}
else{
for(int i=pos;i<pos+max;i++)
cout<<str1[i];
return 0;
}
}
#include<bits/stdc++.h>
using namespace std;
int main(){
string str1,str2;
cin>>str1>>str2;
int max=0,pos=-1;
int N=str1.size(),M=str2.size();
for(int i=0;i<N;i++){
for(int j=0;j<M;j++){
int count=0;
int x=i,y=j;
while(str1[x]==str2[y]&&x<N&&y<M){
count++;
x++;
y++;
}
if(count>max){
max=count;
pos=i;
}
}
}
if(pos==-1){
cout<<-1<<endl;
return 0;
}
else{
for(int i=pos;i<pos+max;i++)
cout<<str1[i];
return 0;
}
}