- -
2023-08-25 12:19:54
发布于:北京
7阅读
0回复
0点赞
#include<iostream>
using namespace std;
/*数组栈的模拟*/
const int N = 1e5;
char st[N]; //模拟栈的容器数组
int TOP; //模拟指针,指向栈顶第一个元素
/*入栈*/
void push(char n) {
++TOP;
st[TOP] = n;
}
/*出栈*/
void pop() {
--TOP;
}
/*栈顶元素*/
char top() {
return st[TOP];
}
/*栈是否为空: true空 */
bool empty(){
return TOP==0;
}
int main(){
int n;
cin >> n;
while(n--) {
string s;
cin >> s;
int flag = 0;
//清空栈
while(!empty()) {
pop();
}
for(int i=0; i<s.size(); i++) {
if(s[i]=='(' || s[i] == '[') {push(s[i]);continue;}
if(!empty()) {
if(s[i]==')') {
if(top()=='(') pop();
else { flag = 1 ; cout << "No" <<endl; break;} //输出No标记一下
}else if(s[i]==']') {
if(top()=='[') pop();
else { flag = 1 ; cout << "No" <<endl; break;} //输出No标记一下
}
}else { flag = 1 ; cout << "No" <<endl; break;} //输出No标记一下
}
if(empty() && flag==0) cout << "Yes"<< endl; //没有进入循环,同时栈为空 标记一下
else if(flag ==0) cout << "No"<< endl; //只有入栈
}
return 0;
}*斜体文本*
这里空空如也
有帮助,赞一个