#include<iostream>
#include<stack>
#include<string>
using namespace std;
int main(){
int n;
cin>>n;
string a[n];
for(int i=0;i<n;i++){
getline(cin,a[i]);
}
int i=0;
while(i!=n){
bool legal=true;
stack<string> st;
int count=0;
int length=a[i].length();
for(int j=0;j<length;j++){
if(a[i][j]=='('){
st.push("(");
count++;
continue;
}
if(a[i][j]=='['){
st.push("[");
count++;
continue;
}
if(a[i][j]==')'){
if(st.empty()){
legal=false;
break;
}
if(st.top()!="("){
legal=false;
break;
}
else if(st.top()=="("){
st.pop();
continue;
}
}
if(a[i][j]==']'){
if(st.empty()){
legal=false;
break;
}
if(st.top()!="["){
legal=false;
break;
}
else if(st.top()=="["){
st.pop();
continue;
}
}
}
if(!st.empty()) cout<<"No"<<endl;
else if(count==0) cout<<"NO"<<endl;
else if(legal==true) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
i++;
}
}
#include
#include
#include
using namespace std;
int main(){
int n;
cin>>n;
string a[n];
for(int i=0;i<n;i++){
getline(cin,a[i]);
}
int i=0;
while(i!=n){
bool legal=true;
stack st;
int count=0;
int length=a[i].length();
for(int j=0;j<length;j++){
if(a[i][j]=='('){
st.push("(");
count++;
continue;
}
if(a[i][j]=='['){
st.push("[");
count++;
continue;
}
if(a[i][j]==')'){
if(st.empty()){
legal=false;
break;
}
if(st.top()!="("){
legal=false;
break;
}
else if(st.top()=="("){
st.pop();
continue;
}
}
if(a[i][j]==']'){
if(st.empty()){
legal=false;
break;
}
if(st.top()!="["){
legal=false;
break;
}
else if(st.top()=="["){
st.pop();
continue;
}
}
}
if(!st.empty()) cout<<"No"<<endl;
else if(count==0) cout<<"NO"<<endl;
else if(legal==true) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
i++;
}
}
第一行讀完數字後用cin.ignore()忽略換行的'\n'
接下來每行都直接讀整行,getline(cin, string)
以上