括号匹配问题c++代码
时间: 2024-10-23 08:00:52 浏览: 31
括号匹配问题,也称为括号平衡问题,是编程中常见的字符串处理问题,通常用于检查输入的字符序列(如圆括号、方括号和花括号)是否有效。在 C++ 中,你可以通过栈数据结构解决这个问题。下面是一个简单的 C++ 代码示例:
```cpp
#include <stack>
#include <string>
bool isValid(std::string s) {
std::stack<char> stack;
for (char c : s) {
if (c == '(' || c == '[' || c == '{') { // 入栈
stack.push(c);
} else if (!stack.empty()) { // 非空栈且当前字符是闭合符
char top = stack.top();
if (top == '(' && c != ')') return false; // 左圆括号未匹配右圆括号
if (top == '[' && c != ']') return false; // 左方括号未匹配右方括号
if (top == '{' && c != '}') return false; // 左大括号未匹配右大括号
stack.pop(); // 匹配成功,出栈
} else { // 栈为空,遇到闭合符直接返回false
return false;
}
}
// 如果遍历完所有字符,且栈为空,则表示匹配成功
return stack.empty();
}
阅读全文