您的位置:首页 > 其它

输入3个子串, 输出这3个子串的最大公共子串

2013-03-23 16:46 274 查看
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1;
string s2;
string s3;
string *sp1;
string *sp2;
string *minp;
cin>>s1>>s2>>s3;
if(s1.length()> s2.length())
{
sp1 = &s1;
sp2 = &s2;
}else
{
sp1 = &s2;
sp2 = &s1;
}

if(sp2->length()>s3.length())
{
minp = &s3;
}else
{
minp = sp2;
sp2 = &s3;
}

int max = 0;
int start = 0;
int length = minp->length();
for(int i = 0; i < length; ++i )
{
int templen = length - i;
for(int n = max; n < templen; ++n)
{
if((sp1->find(minp->substr(i, n))!=string::npos) && (sp2->find(minp->substr(i, n))!= string::npos))
{
if(n > max)
{
max = n;
start = i;
}
}else
{
break;
}
}
}
cout<<minp->substr(start, max);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐