做题时先把可能的情况列一下
tuuum
m
d
d
找几个特别的发现规律:
题说长度为奇数,那么我们发现没次删除两个,那么留下的那个次序必为奇数。但我们没有考虑为1的情况其下标为0,所以需要特判,再进一层次考虑我们可能会遇到相同不连续的字母,从该字母的下一位继续find,直至找不到返回-1。
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
getchar();
while(n--)
{
string s1;
cin>>s1;
char c;
cin>>c;
int ans=s1.find(c); //先找到第一次出现的位置
while(1) //注意find找不到是会返回-1的所以必须特判
{
//if((s1.size()-ans%2)%2&&ans>=0) //能找到说明他的位次是一个奇数但是他的下标为一个偶数
if(ans%2==0&&ans>=0||s1.size()==1&&ans==0)
{
cout<<"Yes"<<endl; //还有就是单独出现他的位置为0 0%2==0需要特判
break;
}
else
{
ans=s1.find(c,ans+1);
if(ans==-1)
{
cout<<"No"<<endl;
break;
}
}
}
}
return 0;
}