用栈写一个括号匹配检验
时间: 2023-11-06 13:00:28 浏览: 72
以下是用Python实现的括号匹配检验:
```python
def is_valid_parentheses(s: str) -> bool:
stack = []
mapping = {")": "(", "}": "{", "]": "["}
for char in s:
if char in mapping:
top_element = stack.pop() if stack else "#"
if mapping[char] != top_element:
return False
else:
stack.append(char)
return not stack
# 示例
print(is_valid_parentheses("()")) # True
print(is_valid_parentheses("()[]{}")) # True
print(is_valid_parentheses("(]")) # False
print(is_valid_parentheses("([)]")) # False
print(is_valid_parentheses("{[]}")) # True
```
解释:
我们可以使用栈来检验括号的匹配情况。遍历字符串中的每个字符,如果是左括号,则将其压入栈中;如果是右括号,则从栈中弹出一个元素并比较是否匹配。如果匹配则继续遍历,否则返回False。最后,检查栈是否为空,如果为空则返回True,否则返回False。在这个实现中,我们使用了一个字典来存储每个右括号对应的左括号,这样我们可以很方便地比较。注意,当栈为空时,我们需要使用一个特殊字符来代替栈顶元素以避免出现空指针异常。
阅读全文