使用cin.getline函数,延续MyStack类写一个parenMatch的括号匹配方法
时间: 2024-09-23 08:10:14 浏览: 39
`cin.getline`函数通常用于从标准输入流中读取一行字符串。为了实现`parenMatch`括号匹配方法,我们需要维护一个栈来存储输入序列中的左括号,并通过比较每个字符来判断括号是否匹配。如果遇到右括号,我们检查栈顶元素是否是对应的左括号;如果是,则弹出,继续检查下一对;如果不是或栈为空,则说明括号不匹配。
以下是基于`MyStack`类的`parenMatch`方法的示例:
```cpp
class MyStack {
public:
// 原有的push和pop方法...
// 新增括号匹配方法
bool parenMatch(const string &input) {
stack<char> brackets;
for (char c : input) {
if (c == '(' || c == '{' || c == '[') { // 如果是左括号
brackets.push(c);
} else if (c == ')' && !brackets.empty()) { // 如果是右括号
if (c == ')' && brackets.top() == '(' ||
c == '}' && brackets.top() == '{' ||
c == ']' && brackets.top() == '[') {
brackets.pop(); // 匹配成功,移除栈顶元素
} else {
return false; // 不匹配,直接返回false
}
} else {
break; // 非括号字符,跳出循环
}
}
// 检查栈是否为空,如果为空则所有括号都已匹配
return brackets.empty();
}
};
```
当调用`parenMatch`时,它会返回`true`如果输入的括号序列匹配,否则返回`false`。
阅读全文