建立栈,检验括号序列是否匹配
时间: 2024-10-12 14:05:17 浏览: 31
在C++中,你可以使用栈(Stack)数据结构来检查括号序列是否匹配。栈是一种后进先出(LIFO, Last In First Out)的数据结构,非常适合用于处理括号匹配的问题。如果括号是成对出现的,比如'('、')'、'['、']'或'{'}、'}',我们可以通过遍历字符串并利用栈的特性来判断它们是否正确匹配。
以下是一个简单的算法步骤:
1. 创建一个空栈,用来存放左括号。
2. 遍历输入的括号序列,对于每个字符:
- 如果是左括号,将其压入栈中。
- 如果是右括号:
- 检查栈顶元素是否为对应的左括号:
- 如果是,弹出栈顶元素;否则,返回false,因为括号不匹配。
- 循环结束后,如果栈为空,则括号匹配;否则,不匹配,返回false。
3. 最终,如果循环完成且栈也为空,说明所有括号都已正确配对,返回true。
这是一个基本的C++代码示例:
```cpp
#include <stack>
#include <string>
bool isParenthesesMatch(const std::string& str) {
std::stack<char> stack;
for (char c : str) {
if (c == '(' || c == '[' || c == '{') {
stack.push(c);
} else if (c == ')' && !stack.empty() && stack.top() == '(') {
stack.pop();
} else if (c == ']' && !stack.empty() && stack.top() == '[') {
stack.pop();
} else if (c == '}' && !stack.empty() && stack.top() == '{') {
stack.pop();
} else {
return false; // 不匹配的右括号直接返回错误
}
}
return stack.empty(); // 如果堆栈为空,表示括号都匹配
}
```
阅读全文