题解---有详细解题过程!
2025-07-08 20:30:18
发布于:浙江
5阅读
0回复
0点赞
这题可以用模拟栈,循环遍历每个字符并判断:如果是左括号,压入栈中;如果是右括号,再判断:如果栈空,则没有与之对应的左括号,输出NO;否则说明有与之配对的左括号,将一个左括号弹出。最后再看看栈有没有空,如果栈空说明括号匹配,输出YES,否则输出NO。
代码
#include <bits/stdc++.h>
using namespace std;
char a[256];
int TOP;
void push(int x){
a[++TOP] = x;
}
void pop(){
--TOP;
}
bool empty(){
return TOP == 0;
}
int main(){
string s;
getline(cin,s);
for(int i = 0;i <= s.size();i++){
if(s[i] == '(') push(s[i]);
else if(s[i] == ')'){
if(empty()){
cout << "NO";
return 0;
}else{
pop();
}
}else if(s[i] == '@'){
break;
}
}
if(empty()) cout << "YES";
else cout << "NO";
return 0;
}
这里空空如也
有帮助,赞一个