编写算法,对给定的字符串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; }
相关文章推荐
- Android—Activity的四种启动模式
- linux命令10--file
- Qt4学习(3)——用定时器循环播放图片
- tc 147 2 PeopleCircle(再见约瑟夫环)
- leetcode[226]:Invert Binary Tree
- 已知s="(XYZ)+*",t="(X+Z)*Y",利用联接,求子串和转换等基本运算,将s转化为t
- leetcode:Invert Binary Tree
- linux命令9--diffstat
- 一道离散化+线段树+扫描线的题
- 将栈S中的元素逆置,使用额外的一个栈L和非数组变量
- JDK安装成功了,环境变量也配置好了,测试代码也可以运行,但是打不开eclipse
- 常用的三种android分包规范
- Odoo进销存(采购、销售、仓库)入门教程 - 下
- commands commence before first target. 报错
- Java之多线程下载
- BZOJ 4034: [HAOI2015]T2( 树链剖分 )
- Winform开发几个常用的开发经验及知识积累(一)
- python 检查邮箱是否有新邮件并邮件通知
- JavaWeb之Servlet
- S是一个存放在数组中,长为n的字符串,试编写一个程序将S按下述要求改造后输出