题解 AT3590 【Inserting 'x'】

Griseo_nya

2021-02-01 17:14:30

Solution

一道字符串水题。 输入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; } ```