数据结构c++中 给定一串字符,不超过一百个字符,可能包括括号,数字字母标点符号空格,编程检查这串字符中()[]{}是否匹配
时间: 2024-10-25 10:08:53 浏览: 41
在C++中,要检查给定字符串中括号、方括号和花括号的匹配情况,你可以使用栈数据结构。栈是一种后进先出(LIFO)的数据结构,非常适合此类问题,因为当我们遇到开括号(如'('、'['或'{'})时,我们将其压入栈中;当遇到相应的闭合括号(如')'、']'或'}'})时,我们检查栈顶元素是否与其匹配,如果匹配则弹出,如果不匹配则表示不匹配。
下面是一个简单的步骤来实现这个功能:
1. 定义一个栈,用于存储左括号。
2. 遍历输入字符串,对于每个字符,判断其是否为左括号。
- 如果是左括号,压入栈中。
- 如果是右括号,检查栈顶是否为对应的左括号。如果是,则弹出栈顶元素;如果不是或栈为空,返回false,表示不匹配。
3. 遍历结束后,如果栈为空,说明所有括号都已匹配,返回true;否则返回false。
以下是一个简化的伪代码示例:
```cpp
bool isParenthesesMatched(const string& str) {
stack<char> brackets;
for (char c : str) {
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 false; // 不匹配的右括号直接返回false
}
}
return brackets.empty(); // 判断栈是否为空
}
```
阅读全文