括号匹配
括号匹配,输入测试数目n,接着n行输入n组样例(考过多次),假设只包含小括号和中括号。
输入格式:
准备判断表达式的个数
输入包含小括号或者中括号的括号表达式(其中可有其它符号)
输出格式:
可以匹配输出yes否则no
输入样例:
2
([3])
([[[)
输出样例:
yes
no
https://noobdream.com/DreamJudge/Issue/page/1501/#
#include <iostream>
#include<stack>
using namespace std;
string solve(string s) {
stack<char> st;
int len = s.length();
for(int i = 0;i < len; i++) {
if(st.size() == 0 && (s[i] == ')' || s[i] == ']')) return "no";
if(s[i] == '(' || s[i] == '[') {
st.push(s[i]);
}
if(s[i] == ')' && st.top() == '(') st.pop();
if(s[i] == ']' && st.top() == '[') st.pop();
}
return st.size() == 0 ? "yes" : "no";
}
int main()
{
int n;
cin >> n;
for(int i = 0;i < n;i ++) {
string s;
cin >> s;
cout<<solve(s)<<endl;
}
return 0;
}