求一个字符串连续出现次数最多的子串
//求一个字符串中连续出现次数最多的字符串
pair<int,string> calcuate(const string& str)
{
int len = str.length();
vector<string>substrs;
int count = 1;
int max = 1;//记录最大出现的次数
string str1;
int i , j;
for( i = 0;i < len;i++)
{
substrs.push_back(str.substr(i,len - i));//
}
for( i = 0;i < len;i++)
{
for( j = i + 1;j < len;j++)
{
count = 1;
if(substrs[i].substr(0,j-i)==substrs[j].substr(0,j-i))//判断是否第二次出现某类型子串 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 > max)
{
max = count;
str1 = substrs[i].substr(0,j-i);
}
}
}
}
return make_pair(max,str1);
}
int main()
{
pair<int, string> rs;
string str="ababababac";
rs = calcuate(str);
cout << rs.second<<':'<<rs.first<<'\n';
return 0;
} <strong>
</strong>