关于括号序列

· · 个人记录

判断是否合法

栈中存放左括号,当遇到右括号之后,检查栈中是否有左括号,如果有则出栈,如果没有,则说明不匹配。最后如果栈非空则不匹配。

#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;
}