使用c++编写一个程序,检查字符串中是否包含正确嵌套和平衡的圆括号方括号和花括号
时间: 2024-03-26 19:38:25 浏览: 82
可以使用栈(stack)数据结构来实现。
具体步骤如下:
1. 定义一个栈,用于存储左括号。
2. 遍历字符串中的每个字符。
3. 如果当前字符是左括号,则将其推入栈中。
4. 如果当前字符是右括号,则从栈顶取出一个左括号进行匹配。
5. 如果匹配成功,则继续遍历字符串,否则返回 false。
6. 遍历结束后,如果栈为空,则表示所有括号都匹配成功,返回 true,否则返回 false。
下面是示例代码:
```c++
#include <iostream>
#include <stack>
using namespace std;
bool checkBalance(string str) {
stack<char> s;
for (int i = 0; i < str.length(); i++) {
if (str[i] == '(' || str[i] == '[' || str[i] == '{') {
s.push(str[i]);
}
else if (str[i] == ')') {
if (s.empty() || s.top() != '(') {
return false;
}
s.pop();
}
else if (str[i] == ']') {
if (s.empty() || s.top() != '[') {
return false;
}
s.pop();
}
else if (str[i] == '}') {
if (s.empty() || s.top() != '{') {
return false;
}
s.pop();
}
}
return s.empty();
}
int main() {
string str;
cout << "请输入字符串:";
cin >> str;
if (checkBalance(str)) {
cout << "括号匹配成功!" << endl;
}
else {
cout << "括号匹配失败!" << endl;
}
return 0;
}
```
该程序可以检查字符串中是否包含正确嵌套和平衡的圆括号、方括号和花括号。
阅读全文