在字符串中查找连续重复的最长子串的C++实现
来源:互联网 发布:java 1到100阶乘 编辑:程序博客网 时间:2024/05/17 01:41
#include "stdafx.h"#include <stdlib.h>#include <iostream>#include <string>#include <vector>using namespace std;/****************************************************************功能:写一个函数,找出一个字符串中最长的连续重复子串。Exmaple:Input: abcabbcabc output: 2:bcab原理:substr0 abcabbcabcsubstr1 bcabbcabcsubstr2 cabbcabcsubstr3 abbcabcsubstr4 bbcabcsubstr5 bcabcsubstr6 cabcsubstr7 abcsubstr8 bcsubstr9 c****************************************************************/pair<int,string> fun(const string& str){vector<string> substrs; // vecotrint maxcount = 1, count =1;string substr;int i,len = str.length();for(i=0; i<len; ++i)substrs.push_back(str.substr(i,len-i));for(i=0; i<len; ++i){for(int j=i+1; j<len; ++j){count = 1;if(substrs[i].substr(0,j-i) == substrs[j].substr(0,j-i)){++count;for(int k =j+(j-i); k<len; k+=(j-i)){if(substrs[i].substr(0,j-i) == substrs[k].substr(0,j-i))++count;else break;}if (count> maxcount){maxcount = count;substr = substrs[i].substr(0,j-i);}}}}return make_pair(maxcount,substr);}int _tmain(int argc, _TCHAR* argv[]){string str;pair<int,string> rs;cout<<"Please Input a string:";while(cin>>str){rs = fun(str);cout<<rs.second<<":"<<rs.first<<'\n';cout<<"Please Input a string:";}return 0;}
// 运行结果
- 在字符串中查找连续重复的最长子串的C++实现
- 在字符串中查找最长重复子串的探讨
- 查找字符串中最长的连续数字子串
- 查找字符串中最长无重复字符的子串
- 查找字符串中最长重复字符的子串
- 查找字符串中无重复最长子串的长度
- 字符串中连续出现最多的子串 & 字符串中最长重复子串
- 字符串中连续最长重复子串
- 【C++】在字符串中找出连续最长的数字子串
- 在字符串中查找最长重复子串
- 字符串操作问题:查找给定字符串中,连续重复且长度最长的第一个子串
- 求一个字符串中最长的非重复连续子串
- 【算法题】查找字符串中无重复最长子串的长度
- 求字符串中最长连续数字子串的长度
- 求字符串中最长连续数字子串的长度
- c语言实现 在一个字符串中找到由同一个字符组成的最长子串
- 在英文字符串中找第一个最长不含重复字符的子串高效实现(修改版)
- 求字符串的最长无重复字符子串(C++)
- undo表空间重建和缩小undo表空间
- 数据结构-线性表-双向链表
- Exchange Server 2010 OWA基于表单身份验证剖析
- Cycling
- 指针的学习
- 在字符串中查找连续重复的最长子串的C++实现
- 古人两个通病:懒和穷
- c语言详解sizeof & sizeof函数总结
- hdu 4283
- 如何使用打成jar文件
- char数组存储中英文字符
- 13.删除单链表中重复的元素
- *** glibc detected *** double free or corruption (out) ***
- ActiveMQ使用笔记(二)ActiveMQ消息持久化(2)