网易笔试
# 第一题答案
#include<bits/stdc++.h> using namespace std; int getlen(int i,int j,string str) { while(i>=0 && j<str.size() && str[i]==str[j]) { i--; j++; } return j-i-1; } int main() { string str; cin>>str; int start=0; int maxl=0; for(int i=str.size()-1;i>=0;i--) { int len1=getlen(i,i,str); int len2=getlen(i-1,i,str); int tempmax=len1>len2 ? len1:len2; int end=i+ (tempmax-1)/2; if(tempmax>maxl && end==str.size()-1) { maxl=tempmax; start=i-(tempmax)/2; } } string res=""; for(int i=0;i<start;i++) res += str[i]; string mid=str.substr(start,maxl); string tempstr=res; reverse(tempstr.begin(),tempstr.end()); if(maxl<str.size()) { res =res+mid+tempstr; } else { res=res+mid; } cout<<res<<endl; return 0; }
也就这样