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

 1 #include<iostream>
 2 #include<string>
 3 #include<vector>
 4 using namespace std;
 5 string my_string(string s,int &count)
 6 {
 7     vector<string> p;
 8     vector<int>result_cnt;
 9     vector<string>result_str;
10     for(int i=0;i<s.length();i++)
11     {
12         string temp(s.begin()+i,s.end());
13         p.push_back(temp);
14     }
15 
16     int M=(s.length()+1)/2;
17     for(int j=1;j<=M;j++)
18     {
19         vector<int> sum;
20         for(int k=0;k<p.size()-1;k++)
21         {
22             
23             int flag=1;
24             int q=k;
25             while(1)
26             {
27                 if(p[q].size()<j)
28                     break;
29                 else
30                 {
31                     string s1(p[q].begin(),p[q].begin()+j);
32                 
33                     if(q+j>=p.size() || p[q+j].size()<j)
34                         break;
35                     else
36                     {
37                         string s2(p[q+j].begin(),p[q+j].begin()+j);
38                 
39                         if(s1==s2)
40                         {
41                             q+=j;
42                             flag++;
43                         }
44                         else
45                             break;
46                     }
47                 }
48             }
49             sum.push_back(flag);
50         }
51         int max=sum[0],index=0;
52         for(int t=1;t<sum.size();t++)
53         {
54             if(sum[t]>max)
55             {
56                 max=sum[t];
57                 index=t;
58             }
59         }
60         string ss(p[index].begin(),p[index].begin()+j);
61         result_cnt.push_back(max);
62         result_str.push_back(ss);
63     }
64     int id=0;
65     count=result_cnt[0];
66     for(int z=1;z<result_cnt.size();z++)
67     {
68         if(result_cnt[z]>count)
69         {
70             count=result_cnt[z];
71             id=z;
72         }
73     }
74     return result_str[id];
75 }
76 int main()
77 {
78     string s="abababcbcbcbcbcbcdef";
79     int count=0;
80     string x;
81     x=my_string(s,count);
82     cout<<x<<endl;
83     cout<<count<<endl;
84     system("pause");
85     return 0;
86 }
原文地址:https://www.cnblogs.com/riden/p/4664834.html