用栈解决括号匹配问题
时间: 2023-12-10 11:41:23 浏览: 87
利用栈括号匹配
括号匹配问题可以使用栈来解决。具体步骤如下:
1. 初始化一个空栈。
2. 遍历字符串中的每个字符,如果是左括号(包括小括号、中括号、大括号等),则将其压入栈中。
3. 如果是右括号,判断当前栈顶元素是否与该右括号匹配,如果匹配则弹出栈顶元素,继续遍历字符串中的下一个字符;否则,说明括号不匹配,返回错误。
4. 遍历完字符串后,如果栈为空,则说明所有括号匹配;否则,说明有未匹配的括号,返回错误。
以下是一个使用 Python 实现的括号匹配问题的栈解法:
```python
def is_valid_parentheses(s: str) -> bool:
stack = []
for c in s:
if c in ['(', '[', '{']:
stack.append(c)
elif c == ')':
if not stack or stack.pop() != '(':
return False
elif c == ']':
if not stack or stack.pop() != '[':
return False
elif c == '}':
if not stack or stack.pop() != '{':
return False
return not stack
```
在这个实现中,我们使用一个列表来模拟栈。当遇到左括号时,将其压入栈中;当遇到右括号时,弹出栈顶元素并判断是否匹配。最后,判断栈是否为空,如果为空则表示所有括号都匹配,否则表示有未匹配的括号。
阅读全文