题解
2024-07-23 10:13:12
发布于:广东
13阅读
0回复
0点赞
这道题其实很简单,我们甚至不用栈。
//搞不懂为什么要用栈
//只需要一个变量,左括号加一,右括号减一
//如果出现了负数直接退出,不给左括号加回正数的机会
//不然就会WA
#include <bits/stdc++.h>
using namespace std;
int main(){
int flag=0;
string a;
getline(cin,a);
for (int i=0;i<a.size();i++){
if (a[i] == '@')break;//如果是@直接退出
if (a[i] == '('){//加一
flag++;
}if (a[i] == ')'){//减一
flag--;
if (flag < 0)break;//这一行很重要,可以识别像)x+y(的表达式
}
}if (flag == 0){//如果匹配输出YES,否则输出NO
cout << "YES";
}else cout << "NO";
return 0;
}
这里空空如也
有帮助,赞一个