两个字符串的最大公共子串
给定一个query 和一个text , 均由小写字母组成,要求在text 中找出以同样的顺序连续出现在query中的最长连续字母的序列,例如
query 为“acbac", text 为 ”acaccbabb“,那么text 中的”cba“为最长的连续出现在query中的字母序列。
#include <iostream>
#include <string>
#include <algorithm>
#include <limits.h>
using namespace std;
string FindMAxSubString( string a ,string b);
int main()
{
string a ="acbac";
string b="acaccbabb";
cout<<FindMAxSubString(a,b)<<endl;
return 0;
}
string FindMAxSubString( string a ,string b)
{
string res = "";
string shorter = a.length()>b.length()? b:a;
string longer = a.length()>b.length()? a:b;
int maxlen =0;
int maxpos =-1;
for(int i =0; i<shorter.length();i++){
for(int j =0;j<longer.length();j++)
{
if(shorter[i]==longer[j])
{
int k =1;
for(;(shorter[i+k]==longer[j+k])&& i+k<shorter.length();k++);
if(k>maxlen){
maxpos =i;
maxlen =k;
}
}
}
}
if(maxpos==-1)
return res;
else
{
res=shorter.substr(maxpos,maxlen);
return res;
}
}

浙公网安备 33010602011771号