c++输入一串包含大中小括号的字符串,输出括号是否匹配
时间: 2024-10-12 20:05:53 浏览: 35
在C++中,你可以使用栈数据结构来检查括号是否匹配。栈是一种后进先出(LIFO)的数据结构,非常适合用于这种问题,因为它可以按照插入顺序来检查括号的配对。
以下是一个简单的算法步骤:
1. 创建一个空栈,并遍历输入字符串的每个字符。
2. 如果遇到左括号('(', '{', '['),将其压入栈中。
3. 如果遇到右括号(')', '}', ']'),检查栈顶元素是否是对应的左括号(例如,')' 对应 '(','}' 对应 '{',']' 对应 '[')。如果匹配,弹出栈顶元素;如果不匹配,说明括号不匹配,返回false。
4. 遍历完所有字符后,如果栈为空,说明所有的括号都已匹配,返回true;否则,表示还有未匹配的左括号,返回false。
下面是一个简单的C++函数示例:
```cpp
#include <stack>
#include <string>
bool isParenthesesMatched(const std::string& str) {
std::stack<char> stack;
for (char ch : str) {
if (ch == '(' || ch == '{' || ch == '[') {
stack.push(ch);
} else if (ch == ')' && !stack.empty() && stack.top() == '(') {
stack.pop();
} else if (ch == '}' && !stack.empty() && stack.top() == '{') {
stack.pop();
} else if (ch == ']' && !stack.empty() && stack.top() == '[') {
stack.pop();
} else {
return false; // 匹配错误,直接返回false
}
}
return stack.empty(); // 判断剩余栈是否为空
}
```
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)