题目:
对于一个字符串,我们想通过添加字符的方式使得新的字符串整体变成回文串,但是只能在原串的结尾添加字符,请返回在结尾添加的最短字符串。
给定原字符串A及它的长度n,请返回添加的字符串。保证原串不是回文串。
测试样例:
"ab",2
返回:"a"
![]()
/* 我的QQ:825580813(欢迎来一起讨论,刷题,PK)。 */ #include <iostream> #include <algorithm> #include <cstdlib> #include <ctime> #include <string> using namespace std; bool isPalindrome (string str) { for( int i = 0, j = str.length() - 1; i < j; ++i, --j) { if( str[i] != str[j] ) { return false; } } return true; } string addToPalindrome (string A, int n) { for( int i = 0; i < n; ++i ) { if( A[i] == A[n - 1] ) { if( isPalindrome(A.substr(i, n - i)) ) { string str = A.substr (0, i); reverse (str.begin (), str.end ()); return str; } } } return ""; } int main () { while( true ) { string str; cin >> str; cout << addToPalindrome (str, str.length ()) << endl << endl; } return 0; }