用C++编写程序判断一个包含( 和 )的括号序列是否匹配
时间: 2024-10-21 07:03:24 浏览: 24
hw6_3_.rar_yes_栈 括号匹配
在C++中,判断括号序列是否匹配可以使用栈的数据结构。这里是一种简单的算法思路:
1. 定义一个字符栈`stack<char>`,用于存储遇到的左括号。
2. 遍历输入的括号序列,对于每个字符:
a. 如果是'(',将其压入栈中。
b. 如果是')',检查栈顶元素是否是'(',如果是,则弹出栈顶元素;如果不是,说明当前序列不匹配,返回false。
3. 如果遍历完整个序列后,栈为空,表示所有括号都已匹配,返回true;如果还有剩余的左括号在栈里,说明有些括号没有对应的右括号,返回false。
下面是一个简单的C++函数实现这个功能:
```cpp
#include <iostream>
#include <stack>
bool isParenthesesMatch(const std::string& str) {
std::stack<char> stack;
for (char c : str) {
if (c == '(') {
stack.push(c);
} else if (c == ')') {
if (stack.empty() || stack.top() != '(') {
return false; // 不匹配,直接返回
}
stack.pop(); // 匹配,移除栈顶元素
}
}
return stack.empty(); // 检查栈是否为空
}
int main() {
std::string test = "((()))";
std::cout << (isParenthesesMatch(test) ? "匹配" : "不匹配") << std::endl;
return 0;
}
```
阅读全文