用c++编写一个程序来确定字符串中的括号是否平衡且嵌套正确。、
时间: 2024-09-19 16:11:22 浏览: 44
在C++中,我们可以使用栈数据结构来检查一个给定字符串中的括号(如 '(', ')', '[', ']', '{', '}' 等)是否平衡和嵌套正确。下面是一个简单的示例程序:
```cpp
#include <iostream>
#include <stack>
#include <string>
bool isBalanced(std::string s) {
stack<char> brackets;
for (char c : s) {
if (c == '(' || c == '[' || c == '{') { // 开始一个新的括号
brackets.push(c);
} else if (!brackets.empty() && (c == ')' && brackets.top() == '(' ||
c == ']' && brackets.top() == '[' ||
c == '}' && brackets.top() == '{')) { // 验证匹配
brackets.pop();
} else {
return false; // 如果遇到不匹配的闭合括号,返回false
}
}
// 如果所有括号都已处理,并且栈为空,说明所有的括号都是平衡的
return brackets.empty();
}
int main() {
std::string test_cases[] = {"()", "({})", "([{}])", "({[()]})", ")("}; // 测试用例
for (const auto& str : test_cases) {
bool result = isBalanced(str);
std::cout << "String " << str << " is balanced: " << (result ? "Yes" : "No") << '\n';
}
return 0;
}
```
这个程序通过遍历输入字符串,对每个字符进行判断:如果遇到开括号,则入栈;如果是闭括号,检查栈顶是否为对应的开始括号,如果是则出栈,否则表示不匹配。如果遍历结束后栈为空,说明括号是平衡的。
阅读全文