题解 AT3590 【Inserting 'x'】
Griseo_nya
2021-02-01 17:14:30
一道字符串水题。
输入s后从两侧开始判回文。很明显,在一端去掉 $x$ 和在另一端的对称位置加上一个 $x$ 有相同的效果,所以在此处我们只采用去掉的方法。
从两边开始逼近,如果两端对称就各往中间走一个字符。如果不对称的话,若两边有一边是 $x$ ,则删去(即仅该侧向中间逼近)。若不对称且两侧均无 $x$ ,则直接退出。
下面就是代码哒☆
```cpp
#include <bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
int siz=s.size(); //读出字符串长度
int l=0,r=siz-1; //设定初始l,r
int ans=0;
while(l<r){
if(s[l]==s[r])r--,l++; //两端对称
else if(s[l]=='x')l++,ans++; //两端不对称,左端是 x
else if(s[r]=='x')r--,ans++; //两端不对称,右端是 x
else puts("-1"),exit(0); //两端不对称,两端均不为 x
}
cout<<ans<<endl; //输出答案
return 0;
}
```