#include "iostream" #include "string" using namespace std; void exchange(char *a,char *b) { char t; t=*a; *a=*b; *b=t; } bool checkPalindrome(string str) { int count=0; for (int i = 0; i < str.size(); ++i) { for (int j = i+1; j < str.size(); ++j) { if( str[i]==str[j]) { count++; } } } if(count>str.size()/2-1) { return true; } else { return false; } } bool fixer(string &str,int i) { int k=str.size()-i-1; for(;k>i;k--) { if(str[k]==str[i]) { int j; j=k+1; for ( ;j < str.size()-i; ++j) { exchange(&str[j],&str[j-1]); } return true; } } // 表示没有找到一个palindrome if(k==i) { return false; } else { return true; } } void fixPalindrome(string &str) { if(checkPalindrome(str)== false) { cout<<"Impossible"<<endl; return; } for (int i = 0; i < str.size()/2; ++i) { if(fixer(str,i)== false) { exchange(&str[i],&str[i+1]); i--; } } } int main() { string str; cin>>str; fixPalindrome(str); cout<<str<<endl; }
C++ 实现回文修复
最新推荐文章于 2025-05-05 09:43:16 发布