假设表达式中允许包含圆括号、方括号和大括号3中括号,编写一个算法判断表达式中括号是否正确配对。
时间: 2024-06-12 08:11:21 浏览: 100
检查一个算术表达式中的括号是否正确匹配。
这个问题可以使用栈来解决。具体步骤如下:
1. 创建一个空栈。
2. 从左到右遍历表达式中的每个字符。
3. 如果当前字符是左括号,则将其压入栈中。
4. 如果当前字符是右括号,则弹出栈顶元素并判断是否与当前右括号匹配。如果不匹配,则表达式中的括号不正确配对,返回false。
5. 如果遍历完整个表达式后栈为空,则表达式中的括号正确配对,返回true;否则,返回false。
C++代码实现如下:
```
#include <iostream>
#include <stack>
#include <string>
using namespace std;
bool isMatched(string s) {
stack<char> st;
for (char c : s) {
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();
}
int main() {
string s;
cout << "请输入一个包含圆括号、方括号和大括号的表达式:" << endl;
cin >> s;
if (isMatched(s)) {
cout << "括号正确配对!" << endl;
} else {
cout << "括号不正确配对!" << endl;
}
return 0;
}
```
阅读全文