括号匹配问题c++代码
时间: 2024-09-21 07:12:20 浏览: 91
括号匹配问题是指给定一组嵌套的圆括号、方括号和大括号,判断是否能形成有效的配对。在 C++ 中解决这个问题通常使用栈数据结构,因为栈是一种后进先出的数据结构,正好对应了匹配过程中需要后打开的括号先关闭的特性。
下面是一个简单的 C++ 代码示例:
```cpp
#include <iostream>
#include <stack>
bool isValid(std::string s) {
std::stack<char> stack;
for (char c : s) {
if (c == '(' || c == '[' || c == '{') { // 打开的括号
stack.push(c);
} else if (!stack.empty() && ((c == ')' && stack.top() == '(')
|| (c == ']' && stack.top() == '[')
|| (c == '}' && stack.top() == '{'))) { // 匹配的闭合括号
stack.pop();
} else { // 不匹配或结束没有闭合括号
return false;
}
}
// 如果所有括号都已正确匹配,栈为空
return stack.empty();
}
int main() {
std::string test_cases[] = {"()", "[]{}", "({[()]})", "{[]}", "([)]", "(])"};
for (const auto& test : test_cases) {
bool result = isValid(test);
std::cout << test << " is " << (result ? "valid" : "invalid") << std::endl;
}
return 0;
}
```
这个程序定义了一个 `isValid` 函数,它遍历输入字符串中的每个字符,如果遇到开放的括号就入栈,遇到闭合的括号则检查栈顶是否与其匹配,如果不匹配或者遍历结束后栈不空,则说明括号没有正确配对。`main` 函数中给出了一些测试用例,你可以根据需要替换或增加更多的例子。
阅读全文
相关推荐

















