用C++写出括号匹配问题的代码
时间: 2024-10-29 18:13:43 浏览: 43
c++的命名规范.doc
在C++中,可以使用栈来解决括号匹配问题。这里有一个简单的代码示例[^1],展示了如何遍历输入字符串并检查括号是否匹配:
```cpp
#include <stack>
#include <string>
bool isParenthesesMatched(const std::string& str) {
std::stack<char> parenthesesStack;
const char* openingBrackets = "([{";
const char* closingBrackets = ")]}";
for (char c : str) {
if (openingBrackets.find(c) != std::string::npos) {
parenthesesStack.push(c);
} else if (closingBrackets.find(c) != std::string::npos) {
// 如果栈顶元素与当前闭合括号对应,移除它
if (parenthesesStack.empty() || parenthesesStack.top() != openingBrackets[closingBrackets.find(c) - 2]) {
return false; // 匹配失败
}
parenthesesStack.pop();
} else {
continue; // 非括号字符忽略
}
}
// 如果还有剩余的开括号,说明匹配失败
return parenthesesStack.empty();
}
```
这段代码定义了一个`isParenthesesMatched`函数,接受一个字符串作为参数,如果字符串中的括号成对匹配,则返回`true`,否则返回`false`。
阅读全文