C++怎么判断字符串里括号的嵌套顺序
时间: 2024-10-17 13:10:12 浏览: 28
C++表达式括号匹配配对判断问题
在C++中,判断字符串里的括号嵌套顺序通常采用栈数据结构。你可以创建一个空栈,然后遍历字符串中的每个字符。对于每种括号(如'('、')'、'{', '}'),有特定的规则:
1. 如果遇到开括号('(', '{', '['),将其压入栈中。
2. 如果遇到闭括号(')', '}', ']`):
- 如果栈为空或者栈顶元素不是对应的开启括号(例如,如果是 ')' 遇到 '(', 就不对了),说明嵌套错误。
- 否则,将栈顶的开括号弹出,继续检查下一个闭括号。
如果遍历完整个字符串,而栈也为空,那么括号嵌套就是正确的。若栈非空,则表示存在未匹配的开括号,导致嵌套错误。
以下是简单的伪代码示例:
```cpp
bool isBalanced(string str) {
stack<char> brackets;
for (char c : str) {
if (c == '(' || c == '{' || c == '[') { // 开始一个新的括号
brackets.push(c);
} else if (c == ')' && brackets.top() != '(' ||
c == '}' && brackets.top() != '{' ||
c == ']' && brackets.top() != '[') {
return false; // 匹配失败
} else {
brackets.pop(); // 成功匹配闭括号,移除栈顶元素
}
}
return brackets.empty(); // 检查是否所有括号都有对应关闭
}
```
阅读全文