- 从第一个字母判断是不是回文,如果不是,把第一个字母一直加到一个答案串的首位,如果之后的字母是回文串,立马返回。
#include<bits/stdc++.h>
using namespace std;
bool isP(string s, int start){
for(int i = start, j = s.size()-1; i<=(i+j)/2; i++, j--){
if(s[i]!=s[j]){
return false;
}
}
return true;
}
int main(){
string s;
string ans;
int flag = 0;
while(cin>>s){
ans.clear();
for(int i =0; i< s.size();i++){
if(!isP(s,i)){//如果不是,那这个字符倒着加到新字符串得第一位
flag =1;
ans.insert(ans.begin(),s[i]);
}else{
break;//如果从下一个字母开始找是回文串,直接返回。就可以涵盖原先是回文得情况
}
}
if(flag==1){
cout<<s+ans<<endl;
}else{
cout<<s<<endl;
}
}
return 0;
}