查找两个字符串a,b中的最长公共子串
题目描述
查找两个字符串a,b中的最长公共子串
输入描述:
输入两个字符串
输出描述:
返回重复出现的字符
输入例子:
abcdefghijklmnop
abcsafjklmnopqrstuvw
输出例子:
jklmnop
解答代码:
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<fstream>
using namespace std;
void swap(string *s1,string *s2)
{
string temp;
temp=*s1;
*s1=*s2;
*s2=temp;
}
int main()
{
string s1,s2;
int i,j,max=0;
int length1=0,length2=0;
freopen("1.txt","r",stdin);
while(cin>>s1>>s2)
{
max=0;
int k1,k2;
int start=0;
int len=0;
if(s1.length()>s2.length())
swap(&s1,&s2);
length1=s1.length();
length2=s2.length();
for(i=0; i<length1; i++)
{
for(j=0; j<length2; j++)
{
k1=i;
k2=j;
len=0;
while(s1[k1]==s2[k2])
{
k1++;
k2++;
len++;
}
if(len > max)
{
max=len;
start=i;
}
}
}
//cout<<"index="<<start<<endl;
//cout<<"len="<<len<<endl;
for(int index=start; index<start+max; index++)
cout<<s1[index];
cout<<endl;
}
return 0;
}