基于栈stack数据结构判断字符串中的括号是否匹配c++
时间: 2024-09-26 19:12:20 浏览: 58
基于栈(Stack)的数据结构可以有效地判断字符串中的括号是否匹配。在C++中,你可以使用一个字符栈来辅助这个过程。以下是一个简单的步骤:
1. 初始化一个空栈。
2. 遍历输入的字符串,对于每个字符,做以下操作:
- 如果遇到左括号(如'('、'{'或'['),将其压入栈中。
- 如果遇到右括号(如')'、'}'或']'):
- 检查栈顶元素是否是对应的左括号(例如,'('对应')','{'对应'}'等)。
- 如果是,弹出栈顶元素;如果不是或者栈为空,说明括号不匹配,返回false。
3. 遍历结束后,如果栈为空,表示所有括号都已配对,返回true;否则,返回false。
下面是一个简单的C++函数示例:
```cpp
#include <stack>
#include <string>
bool isParenthesesMatched(const std::string& str) {
std::stack<char> stack;
for (char c : str) {
if (c == '(' || c == '{' || c == '[') {
stack.push(c);
} else if (c == ')' && stack.top() != '(' ||
c == '}' && stack.top() != '{' ||
c == ']' && stack.top() != '[') {
return false; // 匹配失败,直接返回false
} else {
stack.pop(); // 匹配成功,移除栈顶元素
}
}
return stack.empty(); // 判断栈是否为空,若为空则括号匹配
}
```
阅读全文