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 }