Advertisement
Stingaleed

Untitled

May 25th, 2021
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.65 KB | None | 0 0
  1. //
  2. // Created by Егор Червяков on 25.05.2021.
  3. //
  4. #include <iostream>
  5. #include <string>
  6.  
  7. using namespace std;
  8.  
  9. string reverse(string s){
  10.     string s1=s;
  11.     for(int i=0;i<s.length()/2;i++){
  12.         s1[i]=s[s.length()-1-i];
  13.         s1[s.length()-1-i]=s[i];
  14.     }
  15.  
  16.     return s1;
  17. }
  18.  
  19.  
  20. int main(){
  21.  
  22.     string s1;
  23.     cin>>s1;
  24.     int max_len=1;
  25.     string max_str;
  26.     string buff_str;
  27.     string buff_str1;
  28.  
  29.     cout<<reverse(s1)<<" ";
  30.  
  31.     if(s1.length()==1){
  32.         cout<<s1+s1;
  33.         return 0;
  34.     }
  35.  
  36.     buff_str.assign(s1,0,s1.length());
  37.     if(buff_str.length()%2==0){
  38.         buff_str1.assign(buff_str,0,buff_str.length()/2);
  39.         buff_str1=reverse(buff_str1);
  40.         buff_str.erase(0,buff_str.length()/2);
  41.         if(buff_str==buff_str1){
  42.             for(int i=1;i<s1.length()-1;i++){
  43.                 max_str.assign(s1,0,i);
  44.                 max_str=s1+reverse(max_str);
  45.                 buff_str.assign(max_str,i,max_str.length());
  46.                 if(buff_str.length()%2==0){
  47.                     buff_str1.assign(buff_str,0,buff_str.length()/2);
  48.                     buff_str1=reverse(buff_str1);
  49.                     buff_str.erase(0,buff_str.length()/2);
  50.                     if(buff_str==buff_str1){
  51.                         cout<<max_str;
  52.                         return 0;
  53.                     }
  54.                 }else{
  55.                     buff_str1.assign(buff_str,0,buff_str.length()/2);
  56.                     buff_str1=reverse(buff_str1);
  57.                     buff_str.erase(0,buff_str.length()/2+1);
  58.                     if(buff_str==buff_str1){
  59.                         cout<<max_str;
  60.                         return 0;
  61.                     }
  62.                 }
  63.             }
  64.         }
  65.     }else{
  66.         buff_str1.assign(buff_str,0,buff_str.length()/2);
  67.         buff_str1=reverse(buff_str1);
  68.         buff_str.erase(0,buff_str.length()/2+1);
  69.         if(buff_str==buff_str1){
  70.             for(int i=1;i<s1.length()-1;i++){
  71.                 max_str.assign(s1,0,i);
  72.                 max_str=s1+reverse(max_str);
  73.                 buff_str.assign(max_str,i,max_str.length());
  74.                 if(buff_str.length()%2==0){
  75.                     buff_str1.assign(buff_str,0,buff_str.length()/2);
  76.                     buff_str1=reverse(buff_str1);
  77.                     buff_str.erase(0,buff_str.length()/2);
  78.                     if(buff_str==buff_str1){
  79.                         cout<<max_str;
  80.                         return 0;
  81.                     }
  82.                 }else{
  83.                     buff_str1.assign(buff_str,0,buff_str.length()/2);
  84.                     buff_str1=reverse(buff_str1);
  85.                     buff_str.erase(0,buff_str.length()/2+1);
  86.                     if(buff_str==buff_str1){
  87.                         cout<<max_str;
  88.                         return 0;
  89.                     }
  90.                 }
  91.             }
  92.         }
  93.     }
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.     for(int i=s1.length()-2;i>=0;i--){
  101.         buff_str.assign(s1,i,s1.length());
  102.         if(buff_str.length()%2==0){
  103.             buff_str1.assign(buff_str,0,buff_str.length()/2);
  104.             buff_str1=reverse(buff_str1);
  105.             buff_str.erase(0,buff_str.length()/2);
  106.             if(buff_str==buff_str1){
  107.                 max_len=s1.length()-i;
  108.             }
  109.         }else{
  110.             buff_str1.assign(buff_str,0,buff_str.length()/2);
  111.             buff_str1=reverse(buff_str1);
  112.             buff_str.erase(0,buff_str.length()/2+1);
  113.             if(buff_str==buff_str1){
  114.                 max_len=s1.length()-i;
  115.             }
  116.         }
  117.     }
  118.  
  119.  
  120.     buff_str.assign(s1,0,s1.length()-max_len);
  121.     buff_str=reverse(buff_str);
  122.  
  123.     cout<<reverse(s1);
  124.  
  125.     return 0;
  126. }
  127.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement