试使用C++编写一个算法,检查一个程序中的花括号、方括号和圆 括号是否配对,若能够全部配对则返回1,否则返回0
时间: 2024-10-11 15:12:25 浏览: 44
在C++中,可以创建一个栈来检查字符串中的括号配对。每当遇到开括号(如'{', '[', '('),就将它压入栈中;遇到闭括号(如'}', ']', ')')时,检查栈顶的元素是否与其匹配。如果匹配,则弹出栈顶元素;如果不匹配或者栈为空,则说明无法配对,返回0。当遍历完所有字符后,如果栈为空,意味着所有括号都已配对,返回1;否则返回0。
下面是一个简单的示例:
```cpp
#include <stack>
#include <string>
int checkBrackets(const std::string& s) {
std::stack<char> brackets;
for (char c : s) {
if (c == '{' || c == '[' || c == '(') { // 打开括号
brackets.push(c);
} else if (c == '}' && !brackets.empty() && brackets.top() == '{') {
brackets.pop(); // 匹配的关闭括号,弹出栈顶元素
} else if (c == ']' && !brackets.empty() && brackets.top() == '[') {
brackets.pop();
} else if (c == ')' && !brackets.empty() && brackets.top() == '(') {
brackets.pop();
} else {
// 不匹配或者已经结束但仍有一个打开的括号未找到对应
return 0;
}
}
// 检查栈是否为空,如果为空则全部配对,否则不配对
return brackets.empty() ? 1 : 0;
}
```
这个函数接收一个字符串`s`作为输入,然后通过迭代检查每个字符是否与栈中的括号匹配。如果在遍历结束后,栈为空,那么所有括号都配对了,返回1;反之,返回0。
阅读全文