求一个字符串中连续出现次数最多的子串

来源:互联网 发布:淘宝店铺怎么交保证金 编辑:程序博客网 时间:2024/06/06 01:06

测试用例1:abcbcbcabc    结果:bc  3次

测试用例2:abcccabc        结果:c  3次

示例程序如下(来自程序猿面试宝典):

#include <iostream>#include <string>#include <vector>using namespace std;pair<int,string>fun(const string &str);int main(){string str;pair<int,string> rs;while (cin>>str){rs = fun(str);cout<<rs.second<<":"<<rs.first<<endl;}return 0;}pair<int,string>fun(const string &str){vector<string> substrings;int maxcount = 1,cout = 1;string substr;int i, len = str.length();for (i=0;i<len;++i){substrings.push_back(str.substr(i,len-i));}for(i=0;i<len;++i){for (int j = i+1;j<len;++j){cout = 1;if (substrings[i].substr(0,j-i)==substrings[j].substr(0,j-i)){++cout;for (int k = j+(j-i);k<len;k+=j-i){if (substrings[i].substr(0,j-i)==substrings[k].substr(0,j-i)){++cout;}elsebreak;}   if (cout>maxcount)   {   maxcount = cout;   substr = substrings[i].substr(0,j-i);   }}}}return make_pair(maxcount,substr);}

0 0