- 从第一个字母判断是不是回文,如果不是,把第一个字母一直加到一个答案串的首位,如果之后的字母是回文串,立马返回。
#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; }