括号匹配问题 栈c++
时间: 2023-10-22 17:30:59 浏览: 114
括号匹配问题可以通过使用栈来解决。一种常见的解决方法是,遍历字符串,如果是左括号就将其压入栈中,如果是右括号,判断栈是否为空,如果不为空则弹出一个左括号,否则返回不匹配。遍历结束后,如果栈为空,则返回匹配,否则返回不匹配。这种方法可以用以下代码实现:
```cpp
bool isMatch(string str) {
stack<char> s; // 建立一个栈
for(int i=0; i<str.length(); i++) {
if(str[i == '(') { // 如果当前字符是左括号,将其压入栈中
s.push(str[i]);
}
else if(str[i == ')') { // 如果当前字符是右括号
if(s.empty()) { // 如果栈为空,则返回不匹配
return false;
}
else { // 如果栈不为空,弹出一个左括号
s.pop();
}
}
}
if(s.empty()) { // 遍历结束后如果栈为空,则返回匹配
return true;
}
else { // 如果栈不为空,则返回不匹配
return false;
}
}
```
请注意,这里的栈是使用C++的标准库中的stack类实现的。这个方法可以解决括号匹配问题。
另外,Java也可以用类似的方式解决括号匹配问题。Java具有类似于C语言的“形式和感觉”,但在编程时采用了一种“以对象为导向”的方式。你可以使用Java的Stack类来实现类似的解决方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
阅读全文