#include #include #include using namespace std;

bool isValid(string s) { stack st; for (int i = 0; i < s.length(); i++) { if (s[i] == '(' || s[i] == '[') { st.push(s[i]); } else if (s[i] == ')' || s[i] == ']') { if (st.empty()) { return false; } char top = st.top(); if ((s[i] == ')' && top == '(') || (s[i] == ']' && top == '[')) { st.pop(); } else { return false; } } } return st.empty(); }

int main() { int T; cin >> T; cin.ignore(); while (T--) { string s; getline(cin, s); if (isValid(s)) { cout << "YES" << endl; } else { cout << "NO" << endl; } } return 0; }

假设表达式中允许包含两种括号:圆括号和方括号其嵌套的顺序随意但需要成对出现。即或 等为正确的格式 或 或 均为不正确的格式。给定一串括号输入换行作为结束符检测格式是否正确若正确输出YES;错误输出NO。输入第一行一个正整数T表示有T组测试数据接下来T行每行一个字符串。输出T行每一行一个YES 或 NO。样例输入 复制2样例输出 复制YESNOC++8	19	E14122333

原文地址: http://www.cveoy.top/t/topic/ja4e 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录