这题用stack做
#include <iostream>
#include <stack>
using namespace std;
char S[2600];
stack<char> a;
int main() {
cin >> S;
for (int i = 0; S[i] != '@'; i ++) {
if (S[i] == '(') {
a.push('(');
} else if (S[i] == ')') {
if (a.empty()) {
cout << "NO";
return 0;
}
a.pop();
}
}
if (a.empty()) {
cout << "YES";
} else {
cout << "NO";
}
return 0;
}
如果碰到左括号 将 左括号入栈
如果碰到右括号
如果栈空:说明少左括号 直接输出 NO
遍历一遍后如果还有残留左括号在栈中
那就说明少右括号 也输出 NO
最后 输出 YES 就行了