关于括号序列
判断是否合法
栈中存放左括号,当遇到右括号之后,检查栈中是否有左括号,如果有则出栈,如果没有,则说明不匹配。最后如果栈非空则不匹配。
#include <bits/stdc++.h>
using namespace std;
string A;
bool check(string A) {
stack<char> s;
for (int i = 0; i < A.length(); i++) {
if (A[i] == '(') s.push(A[i]);
else if (A[i] == ')') {
if (s.empty() || s.top() != '(') return false;
else s.pop();
}
}
if (!s.empty()) return false;
return true;
}
int main() {
cin >> A;
if (check(A)) puts("YES");
else puts("NO");
return 0;
}