#include<iostream>
using namespace std;
void AAAAAA(char* str1,char* str2)
{
if(str1 == NULL || str2 == NULL)
return;
int m = strlen(str1);
int n = strlen(str2);
int* next = new int[n]; // next[i] 的值 str2[i] 前面有多少个字母 公共的子串
memset(next,0,n*4);
char* ptr = NULL;
int MAX = 0;
for (int i=0;i<m;i++)
{
// 拿 str1[i] 分别和 str2 的每个字母比较
for (int j=n-1;j>=0;j--)
{
if(str1[i] == str2[j])
{
if(j == 0) // 是否是 第一个字母
{
next[0] = 1;
}
else
{
// 子串的长度 就要++
next[j] = next[j-1]+1;
}
// 看 现在的 子串的长度 是否 超过MAX
if(next[j] > MAX)
{
ptr = &str1[i];
MAX = next[j];
}
}
else
{
// 清空
next[j] = 0;
}
}
}
if(MAX == 0)
{
cout << "没有公共的" << endl;
return;
}
cout << "最大的子串的长度:" << MAX << endl;
cout << ptr-MAX+1 << endl;
}
int main()
{
AAAAAA("aaaaaabcdeeeeabcdhhhhhabcdefreeeeeeeeeeee","kkabcllabcdeppp");
system("pause");
return 0;
}