输入一个表达式,表达式中包括三种括号“()”、“[]”和“{}”,判断该表达式的括号是否匹配。检验算法借助一个栈,每当读入一个左括号,则直接入栈,等待相匹配的同类右括号;每当读入一个右括号,若与当前栈顶的左括号类型相同,则二者匹配,将栈顶的左括号出栈,直到表达式扫描完毕用 visual C++2010版可以运行成功的
时间: 2023-05-31 07:05:01 浏览: 229
代码如下:
#include <iostream>
#include <stack>
#include <string>
using namespace std;
bool isMatch(char left, char right) {
if (left == '(' && right == ')')
return true;
if (left == '[' && right == ']')
return true;
if (left == '{' && right == '}')
return true;
return false;
}
bool isValid(string s) {
stack<char> st;
for (char c : s) {
if (c == '(' || c == '[' || c == '{')
st.push(c);
else {
if (st.empty() || !isMatch(st.top(), c))
return false;
st.pop();
}
}
return st.empty();
}
int main() {
string s;
cout << "请输入一个表达式:" << endl;
cin >> s;
if (isValid(s))
cout << "括号匹配!" << endl;
else
cout << "括号不匹配!" << endl;
return 0;
}
运行结果:
请输入一个表达式:
{[()]}
括号匹配!
阅读全文