

程序源代码:
#include <iostream>
#include <string>
using namespace std;
void findCommon(string a,string b);
int main()
{
string a,b;
getline(cin,a);
getline(cin,b);
string temp;
if(a.length()<b.length())
{
temp=a;
a=b;
b=temp;
}
findCommon(a,b); //a为长字符串,b为短字符串
return 0;
}
void findCommon(string a,string b) //a为长字符串,b为短字符串
{
unsigned int len_a=a.length(),len_b=b.length();//两字符串的长度
unsigned int maxlen=0;//最长公共字符串的长度
unsigned int maxindex=0; //最长公共字符串的最后一个字符的位置
for(unsigned int i=b.length()-1;i>1;i--)
{
for(unsigned int j=0;j<=b.length()-i;j++)
{
string temp;
int t=0;
temp=b.substr(j,i);
t=a.find(temp);
if((t!=-1)&&(maxlen<temp.length()))//匹配成功,并进行比较
{
maxlen=temp.length();
maxindex=i+j;
}
}
}
cout<<b.substr(maxindex-maxlen,maxlen)<<endl;
}
程序运行结果:

|