#include "iostream"
#include "string.h"
using namespace std;
void main()
{
char ch1[]="asdfghjkylasdfasdfhjdsfgsdfgsfgdsfgdfgadfgdsfgsdfgklfgh";
char ch2[]="asdmmmhjklsfdrgs dfgsdfgsdfgsdfgddsfgsdfgsdfggfdsfg";
///可以不用看
int len1=0,len2=0;
while (ch1[len1]!='/0')
{
len1++;
}
while (ch2[len2]!='/0')
{
len2++;
}
// cout<<len1<<" "<<len2<<endl;
/
char **ch=new char*[10000];//用来存储比较后的字符串
for (int i=0;i<=10000;i++)
{
ch[i]=new char[1000];
}
char *p1=ch1, *q1=p1; //p1指向第一个字符串用来自增,q1用来一直指着第一个字符。
char *p2=ch2, *q2=p2; //q2用来指向第二个字符串需要匹配的字符地址。
char *p=NULL;
i=0;
int j=0;
int max=0;
bool f=false; //看ch是否记录
while (*q2!='/0')
{
while (*p1!='/0')
{
while (*p1==*p2 && *p2!='/0' && *p1!='/0')
{
ch[i][j]=*p1;
j++;
*p1++;
*p2++;
f=true;
}
if (j>max)
{
max=j;
p=p2; //记录第二个字符串当前位置
}
if (f==true)
{
ch[i][j]='/0';
j=0;
i++;
f=false;
p2=q2; //第二个字符串重新开始
}
*p1++;
}
q2=p;
p++;
p1=q1;
p2=q2;
}
max=0;
int out=0;
int l1=i;
for (i=0;i<l1;i++)
{
for (j=0;ch[i][j]!='/0';j++)
{
// cout<<ch[i][j];
}
if (j>max)
{
max=j;
out=i;
}
cout<<endl;
}
cout<<"the max sub_string is "<<ch[out]<<endl;
}
结果:the max sub_string is dsfgsdfgs