网易笔试
# 第一题答案
#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;
} 也就这样
查看7道真题和解析