假设一个算术表达式中可以包含两种括号:圆括号"(" 和 ")",方括号"["和"]",且这两种括号可按任意的次序嵌套使用(如:…[…(…)…[…]…]…[…]…(…)…)。编写判别给定字符串中所含括号是否正确配对出现的算法。
例如 “[][]{[{}[]]}”是一个合法的字符串,“[][]{[{][]]}”是一个非法的字符串
bool check(const char* s) {
int len = strlen(s);
stack<char> st;
for (int i = 0; i < len; i++) {
char c = s[i];
if (c == '(' || c == '[')
st.push(c);
else {
assert(c == ')' || c == ']');
if (st.empty()) return ;
char t = st.top();
if(c == ')') {
if (t == ) st.pop();
else break;
} else if (c == ']') {
if (t == ) st.pop();
else break;
}
}
}
return ;
}