查找两个字符串a,b中的最长公共子串。
详细描述:
查找两个字符串a,b中的最长公共子串。
接口设计及说明:
/*****************************************************************************
Description : 查找两个字符串a,b中的最长公共子串
Input Param : String stringA, 输入字符串A
String stringB, 输入字符串B
Output Param :
Return Value : 成功返回最大公共子串,失败返回null(如:数据错误)
*****************************************************************************/
public static String iQueryMaxCommString(String stringA, String stringB)
{
/* 在这里实现功能,将结果填入输入数组中*/
return null;
}
注:在这里主要是针对较短的字符串的操作,按一定的规律取出其所有的子串,再用find操作看是否与另一个字符串匹配。
#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;
string iQueryMaxCommString(string str1, string str2)
{
/* 在这里实现功能,将结果填入输入数组中*/
int pos=0,maxlen=0;
string temp;
for(int i=0;i<str2.size ();i++)
{
for(int j=str2.size ()-i;j>0;j--)
{
temp=str2.substr (i,j);
if((str1.find (temp)!=string::npos)&&maxlen<temp.size ())
{
maxlen=temp.size ();
pos=i;
}
}
}
if(maxlen==0)
return NULL;
else
return str2.substr (pos,maxlen);
}
int main()
{
string str1,str2,temp;
getline(cin,str1);
getline(cin,str2);
string output;
if(str1.size ()<str2.size ())
{
temp=str1;
str1=str2;
str2=temp;
}
output=iQueryMaxCommString( str1, str2);
cout<<output;
system("pause");
return 0;
}