#include <iostream>
#include <string>
using namespace std;
string Get_length(string& s,string& t)
{
int p = s.length();
int q = t.length();
string **num = new string *[p];
for(int i = 0 ; i < p ; ++i)
{
num[i] = new string[q];
}
char char1 = '\0';
char char2 = '\0';
int len = 0;
string lcs = "";
for(int i = 0; i < p ; ++i)
{
for(int j = 0 ; j < q ; ++j)
{
char1 = s.at(i);
char2 = t.at(j);
if(char1!=char2)
{
num[i][j] = "";
}
else
{
if(i == 0||j == 0)
{
num[i][j] = char1;
}
else
{
num[i][j] = num[i-1][j-1]+char1;
}
if(num[i][j].length() > len)
{
len = num[i][j].length();
lcs = num[i][j];
}
else if(num[i][j].length() == len)
{
lcs = lcs+","+num[i][j];
}
}
}
}
for(int i = 0 ; i < p; ++i)
{
delete[] num[i];
}
delete[] num;
return lcs;
}
int main()
{
string s,t;
cout << "输出子串S" << endl;
cin>>s;
cout<<"输入子串T"<<endl;
cin>>t;
cout<<"最长公共子串为:";
cout<<Get_length(s,t)<<endl;
return 0;
}
面试准备——最长公共子串
最新推荐文章于 2024-07-05 00:50:09 发布