题解 | #小易爱回文#
小易爱回文
http://www.nowcoder.com/practice/8eaa64ad417f4deeb25fbd350f2273fb
- 从第一个字母判断是不是回文,如果不是,把第一个字母一直加到一个答案串的首位,如果之后的字母是回文串,立马返回。
#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; }
大厂笔试题题解 文章被收录于专栏
主要是公司笔试题得一些总结