【題解】ZeroJudge e924: pC. 括號配對

【題目敘述】https://zerojudge.tw/ShowProblem?problemid=e924
【解題想法】stack

// 圓括號 ()、方括號 []、小於大於括號 <> 和曲括號 {}
// 轉換成數字 0、4、1、5、2、6、3、7
// 成對的左右括號距離固定為 4

#include <iostream>
#include <map>
#include <stack>
using namespace std;

int main() {
    string s = "([<{)]>}";
    map<char,int> M;
    for (int i = 0; i < (int)s.size(); i++) {
        M[s[i]] = i;
    }
    int T;
    cin >> T;
    while (T--) {
        cin >> s;
        stack<int> stk;
        for (int i = 0; i < (int)s.size(); i++) {
            if (stk.empty()) {
                stk.push(M[s[i]]);
            } else {
                if (stk.top() == M[s[i]] - 4) {
                    stk.pop();
                } else {
                    stk.push(M[s[i]]);
                }
            }
        }
        if (stk.empty()) {
            cout << "Y\n";
        } else {
            cout << "N\n";
        }
    }
    return 0;
}
分享本文 Share with friends