#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{
vector<char> vec;
string ch;
vec.push_back(' '); //在数组尾部添加一空格保证数组不为空
cin>>ch;
for(int i=0;i<ch.length();i++)
{
vec.push_back(ch[i]);
if( vec.back()-1 == *(vec.end()-2) || vec.back()-2 == *(vec.end()-2)) //最后一个元素与倒数第二个元素值比较
{
vec.pop_back();
vec.pop_back();
}
}
if(vec.size()==1)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}
/*
//vec.back()最尾元素引用 ,返回一个值。
//vec.end()回传一个Iterator,它指向 vector 最尾端元素的下一个位置,使用*取其值
//vec.pop_back()删除最尾端元素,容器必须非空
//’(‘和’)’的ASCII值差1,’[”]’和’{”}’两者的ASCII值差2
//vec.back()-1 == *(vec.end()-2)是用vec中的最后一个元素值减1和vec中倒数第二个元素比较,如果相等,说明这是(),配对成功,让配对元素出栈,继续检查下面的字符
//同理,vec.back()-2 == *(vec.end()-2)是用vec中的最后一个元素值减2和vec中倒数第二个元素比较,如果相等,说明这是[]或{},配对成功,让配对元素出栈,继续检查下面的字符.
*/
代码来自NYOJ ,地址如下: