CF1650A Deletions of Two Adjacent Letters 题解
题目要求判断是否可以通过每次删除两个字符,使字符串变成给定的字符。
我们发现可以先从前往后扫描,如果某个字符等于给定的字符,并且这个字符在奇数位,那么就有可能通过两个两个删除字符来达到目的。
又因为字符串是奇数位数的,所以如果上述条件成立,从后往前删也可以达到目的。
#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
int t; cin>>t;
while(t--){
string s; char c; bool f=true; cin>>s>>c;
for(int i=0;i<s.length()&&f;i++){ // 从前往后扫描
if(s[i]==c&&!(i&1) /* 因为字符串是从 0 开始往后存储的,所以判断的是偶数 */ )f=false;
}
cout<<(f?"NO\n":"YES\n"); // 判断是否能达到目的
}
return 0;
}