设一个算术表达式中包含圆括号、方括号和花括号3种类型的括号,编写一个算法判断其中的括号是否匹配。
时间: 2024-05-15 18:19:34 浏览: 90
3.19括号配对_园括号包含吗_数据结构_
算法思路:
1. 新建一个栈,用于存放左括号;
2. 从左到右遍历表达式中的每一个字符:
a. 如果字符为左括号,将其入栈;
b. 如果字符为右括号,判断与栈顶元素是否匹配,若匹配则弹出栈顶元素,否则返回 false;
3. 如果遍历完表达式后,栈内仍有元素,返回 false;否则返回 true。
算法实现:
```python
def is_valid(expression):
stack = []
for c in expression:
if c in ['(', '[', '{']:
stack.append(c)
elif c in [')', ']', '}']:
if not stack:
return False
top = stack.pop()
if (c == ')' and top != '(') or \
(c == ']' and top != '[') or \
(c == '}' and top != '{'):
return False
return not stack
```
算法分析:
时间复杂度为 O(n),空间复杂度为 O(n)。
阅读全文