您的位置:首页 > 其它

输出顺序串中最长的重复子串

2016-04-12 17:25 337 查看
结果如图:



代码:

#include<malloc.h>
#include<string.h>
#include<cstdio>
#include"list.h"
using namespace std;
SqString *MaxSubStr(SqString s)
{
int index=0,length=0,length1,i=0,j,k;
while(i<s.length)
{
j=i+1;
while(j<s.length)
{
if(s.data[i]==s.data[j])
{
length1=1;
for(k=1; s.data[i+k]==s.data[j+k]; k++)
length1++;
if(length<length1)
{
length=length1;
index=i;
}
j+=length1;
}
else j++;

}
i++;
}
SqString *sp;///建立了一个顺序串,用来输出最长子串
sp=(SqString *)malloc(sizeof(SqString));
sp->length=length;
for(i=0;i<length;i++)
sp->data[i]=s.data[index+i];
return sp;
}
int main()
{
SqString s,*sp;
char str[MaxSize];
printf("请输入字符串:\n");
gets(str);
StrAssign(s,str);
printf("显示原字符串:\n");
DispStr(s);
sp=MaxSubStr(s);
printf("输出最长重复子串:\n");
DispStr(*sp);
return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: