❤ • 25天前
using namespace std; string s; int n;
int lv(char x) {
if (x == '<')
return 1;
else if (x == '(')
return 2;
else if (x == '[')
return 3;
else if (x == '{')
return 4;
else
return 666;
} int main() {
cin >> n;
for (int k = 1; k <= n; k++) {
cin >> s;
stack<char> st;
st.push('@');
int flag = 0;
for (int i = 0; i < s.size(); i++) {
if (st.empty() && lv(s[i]) == 666) {
cout << "NO" << endl;
flag = 1;
break;
} else if (lv(s[i]) != 666 && lv(s[i]) <= lv(st.top())) {
st.push(s[i]);
} else if (lv(s[i]) != 666 && lv(s[i]) > lv(st.top())) {
cout << "NO" << endl;
flag = 1;
break;
} else {
if (s[i] == ')' && st.top() == '(' || s[i] == '>' && st.top() == '<' || s[i] == '}' && st.top() == '{' || s[i] == ']'
&& st.top() == '[') {
st.pop();
continue;
} else {
cout << "NO" << endl;
flag = 1;
break;
}
}
}
if (flag == 0 && st.top() == '@')
cout << "YES" << endl;
else {
if (flag == 0)
cout << "NO" << endl;
}
}
return 0;
}
评论:
请先登录,才能进行评论