求一行字符串的最长重复子串(c语言实现)
#include <iostream>
#include <string.h>
#include <stdio.h>
#define maxnum 50
using namespace std;
//求一行字符串的最长重复字符串
int start,maxlength = 0;
void found(char *c)
{
int i=0,j,Count=0;
//abcbadwf jaopabcbadljoat
while(i < strlen(c))
{
j = i+1;
while(j < strlen(c))
{
if(c[j] == c[i])
{
for( Count = 1;c[i+Count] == c[j+Count];Count++);
if(Count > maxlength)
{
maxlength = Count;
start = i;
}
j = j + Count;
}
else
{
j++;
}
}
i++;
}
}
int main()
{
char str[maxnum];
gets(str);
found(str);
cout<<endl;
cout<<start<<" "<<maxlength;
for(int i = 0;i <maxlength;i++)
{
cout<<str[i+start];
}
return 0;
}
博客持续更新一些编程题,有错误或不解欢迎留言,我会在第二天回复,谢谢