判断表达式中的括号是否匹配
时间: 2023-12-01 19:04:47 浏览: 98
判断给定表达式中的括号是否匹配
5星 · 资源好评率100%
判断表达式中的括号是否匹配可以使用栈来实现。具体实现步骤如下:
1. 定义一个栈,用于存储左括号。
2. 遍历表达式中的每个字符,如果是左括号,则将其压入栈中;如果是右括号,则弹出栈顶元素并判断是否与当前右括号匹配,如果不匹配则表达式中的括号不匹配。
3. 如果遍历完整个表达式后栈不为空,则表达式中的括号不匹配。
以下是示例代码:
```c++
#include <iostream>
#include <stack>
#include <string>
using namespace std;
bool isParenthesesMatched(string expr) {
stack<char> s;
for (char c : expr) {
if (c == '(' || c == '[' || c == '{') {
s.push(c);
} else if (c == ')' || c == ']' || c == '}') {
if (s.empty()) {
return false;
}
char top = s.top();
s.pop();
if ((c == ')' && top != '(') || (c == ']' && top != '[') || (c == '}' && top != '{')) {
return false;
}
}
}
return s.empty();
}
int main() {
string expr = "((1+2)*3)";
if (isParenthesesMatched(expr)) {
cout << "Parentheses are matched." << endl;
} else {
cout << "Parentheses are not matched." << endl;
}
return 0;
}
```
阅读全文