输入一个表达式,表达式中包括三种括号“()”、“[]”和“{}”,判断该表达式的括号是否匹配。检验算法借助一个栈,每当读入一个左括号,则直接入栈,等待相匹配的同类右括号;每当读入一个右括号,若与当前栈顶的左括号类型相同,则二者匹配,将栈顶的左括号出栈,直到表达式扫描完毕。
时间: 2023-06-02 11:02:21 浏览: 73
利用栈实现括号匹配的检验
4星 · 用户满意度95%
Python代码如下:
```python
def is_valid(s: str) -> bool:
stack = []
for c in s:
if c in ['(', '[', '{']:
stack.append(c)
else:
if not stack:
return False
if c == ')' and stack[-1] == '(':
stack.pop()
elif c == ']' and stack[-1] == '[':
stack.pop()
elif c == '}' and stack[-1] == '{':
stack.pop()
else:
return False
return not stack
```
时间复杂度:$O(n)$,其中$n$为表达式的长度。
空间复杂度:$O(n)$,其中$n$为表达式的长度,即栈的最大长度。
阅读全文