Codeforces Global Round 4E(字符串,思维)

#include<bits/stdc++.h>
using namespace std;
string s,a,b;
int main(){
cin>>s;
int n=s.size();
int l=0,r=n-1;
while(l<=r-3){//三个字母没有连续相同的,所以四个字符以内必定有相同字母,即回文
if(s[l]==s[r]){
a.push_back(s[l]);
b.push_back(s[r]);
l++,r--;
}
else if(s[l]==s[r-1]){
a.push_back(s[l]);
b.push_back(s[r-1]);
l++,r-=2;
}
else if(s[l+1]==s[r]){
a.push_back(s[l+1]);
b.push_back(s[r]);
l+=2,r--;
}
else if(s[l+1]==s[r-1]){
a.push_back(s[l+1]);
b.push_back(s[r-1]);
l+=2,r-=2;
}
}
if(r>=l)
a.push_back(s[l]);//中间还剩余一个字母,加上它使得串更长,当输入的串很小时,加上中间一个可以使得超过一半
reverse(b.rbegin(),b.rend());//反向迭代器的++是向前的,等同于reverse(b.begin(),b.end());
cout<<a<<b;
return 0;
}

猜你喜欢

转载自www.cnblogs.com/ldudxy/p/11226516.html