题目:给定一个字符串,求出其最长的重复子串
如字符串abcdabcabcd,求的最长重复子串为abcd
代码:
void LongChar(char* str)
{
if(str==NULL)
return;
int max=0;
int first=0;
int count=0;
for(int i=1;i<strlen(str);i++)
for(int k=0,j=0;j<strlen(str)-i;j++)
{
if(str[j]==str[i+j])k++;
else
k=0;
if(k>max)
{
max=k;
first=j-k+1;
}
}
if(max>0)
{
cout<<"long:"<<max<<endl;
for(;count<max;count++)
cout<<str[first+count];
cout<<endl;
}
}
int main()
{
char* str="abcdabcabcd";
LongChar(str);
return 0;
}
运行结果:

给定一个字符串,目标是找到其中最长的重复子串。例如,对于字符串'abcdabcabcd',最长重复子串是'abcd'。提供的代码通过两重循环实现该功能,遍历所有可能的子串并检查它们是否重复。当找到更长的重复子串时,更新最大长度和起始位置。最后,如果找到重复子串,将它打印出来。

538

被折叠的 条评论
为什么被折叠?



