C++用栈写一个括号匹配
时间: 2024-10-22 18:07:50 浏览: 40
在C++中,我们可以使用栈数据结构来检查一个给定字符串中的括号是否匹配。这里有一个简单的算法实现思路:
```cpp
#include <stack>
#include <string>
bool isParenthesesMatched(const std::string& str) {
// 定义一个空栈
std::stack<char> stack;
const char openBrackets[] = "({[";
const char closeBrackets[] = ")}]";
for (char c : str) {
if (openBrackets.find(c) != std::string::npos) { // 如果是左括号
stack.push(c); // 入栈
} else if (closeBrackets.find(c) != std::string::npos) { // 如果是右括号
if (stack.empty() || openBrackets[closeBrackets.find(c)] != stack.top()) { // 检查是否有匹配的左括号
return false; // 匹配失败
}
stack.pop(); // 出栈当前匹配的左括号
}
}
return stack.empty(); // 如果所有括号都已匹配,栈应为空
}
阅读全文