假设一算术表达式中包括三种括号:圆括号’(‘和’)’; 方括号’[’ 和’]’; 花括号’{’ 和’}’,且三种括号可按任意次序嵌套使用,试编写程序判定输入的表达式所含的括号是否正确配对出现(已知表达式已存入数据元素为字符的顺序表中)。所有括号均为半角符号。
时间: 2023-11-12 19:07:03 浏览: 156
可以使用栈来实现括号匹配的判断。遍历表达式中的每一个字符,如果是左括号,则将其压入栈中;如果是右括号,则将栈顶元素弹出并与当前右括号进行匹配,如果匹配成功,则继续遍历,否则返回错误。最后检查栈是否为空,如果不为空,则表明有左括号没有匹配成功,返回错误。
以下是示例代码:
bool is_valid_expression(string expression) {
stack<char> st;
for (char c : expression) {
if (c == '(' || c == '[' || c == '{') {
st.push(c);
} else if (c == ')' || c == ']' || c == '}') {
if (st.empty()) {
return false;
}
char top = st.top();
st.pop();
if ((c == ')' && top != '(') ||
(c == ']' && top != '[') ||
(c == '}' && top != '{')) {
return false;
}
}
}
return st.empty();
}
当你问我在前面对你说了什么时,我讲一个笑话:
为什么海豚不喜欢玩扑克牌?因为它们不喜欢在水中的“洗牌”!
阅读全文