您的位置:首页 > 其它

编写算法,对给定的字符串str,返回其最长重复子串及其下标位置

2015-06-12 20:24 816 查看
/*编写算法,对给定的字符串str,返回其最长重复子串及其下标位置。*/
/*例如,str="abcdacdac",则子串"cdac"是str中最长的重复子串,下标为2*/

#include<iostream>
#include<string>
using namespace std;

int repetition_str(string str,int * Index,int * Max_length)
{
int length_str=str.length();
*Max_length=0;
int same_Num=0;
int iNum,jNum;
for(int i=0;i<length_str;i++)
{
for(int j=i+1;j<length_str;j++)
{
if(str[i]==str[j] && i!=j)
{
iNum=i;
jNum=j;
same_Num=0;

while(str[iNum]==str[jNum])
{
same_Num++;
iNum++;
jNum++;
}
if(same_Num>=(*Max_length))
{
*Max_length=same_Num;
*Index=i;
}
}
same_Num=0;
}
}
return 0;
}

int main()
{
string str="abcdacdac";
int Max_length;
int Index;
repetition_str(str,&Index,&Max_length);
cout<<str<<endl;
cout<<"下标为:"<<Index<<" 最大长度:"<<Max_length<<endl;
cout<<"最长串为: ";
for(int i=Index;i<Index+Max_length;i++)
{
cout<<str[i];
}
cout<<endl;
return 0;
}


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