【題目敘述】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;
}