测试用例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;
}
else
break;
}
if (cout>maxcount)
{
maxcount = cout;
substr = substrings[i].substr(0,j-i);
}
}
}
}
return make_pair(maxcount,substr);
}