利用栈判断字符串括号是否匹配c++
时间: 2024-09-27 19:01:07 浏览: 70
在C++中,可以利用栈数据结构来判断字符串中的括号是否匹配。栈是一种后进先出(LIFO)的数据结构,适合处理需要“先进后出”逻辑的问题。以下是基本步骤:
1. 创建一个空栈。
2. 遍历输入字符串的每个字符,检查它是否是左括号(如'('、'{' 或 '['):
- 如果是左括号,将其压入栈中。
3. 当遇到右括号(如')'、'}' 或 ']')时,检查栈顶元素是否与其配对:
- 如果是匹配的,则弹出栈顶元素。
- 如果不是匹配,或者栈已空,说明括号不匹配,返回false。
4. 遍历结束后,如果栈为空,表示所有括号都已正确配对,返回true;否则,返回false,表示有未匹配的括号。
这是一个简单的示例代码片段:
```cpp
#include <stack>
#include <string>
bool isValidParentheses(const std::string& s) {
std::stack<char> stack;
for (char c : s) {
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; // 匹配错误,直接返回false
}
}
return stack.empty(); // 检查剩余栈是否为空
}
阅读全文