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 }