括号匹配代码 用队列做
时间: 2024-05-12 08:20:50 浏览: 64
以下是使用队列实现括号匹配的代码:
```python
class Queue:
def __init__(self):
self.items = []
def enqueue(self, item):
self.items.append(item)
def dequeue(self):
if not self.is_empty():
return self.items.pop(0)
def is_empty(self):
return len(self.items) == 0
def size(self):
return len(self.items)
def matching_parenthesis(expression):
q = Queue()
for char in expression:
if char in ['(', '[', '{']:
q.enqueue(char)
elif char in [')', ']', '}']:
if q.is_empty():
return False
else:
left_parenthesis = q.dequeue()
if not is_match(left_parenthesis, char):
return False
return q.is_empty()
def is_match(left, right):
if left == '(' and right == ')':
return True
elif left == '[' and right == ']':
return True
elif left == '{' and right == '}':
return True
else:
return False
```
在这个代码中,我们首先定义了一个 `Queue` 类来实现队列的功能。然后,我们实现了 `matching_parenthesis` 函数,这个函数接收一个字符串表达式作为输入,返回一个布尔值,表示这个表达式中的括号是否匹配。
在 `matching_parenthesis` 函数中,我们遍历了字符串中的每一个字符,如果是左括号,我们就将其入队;如果是右括号,我们就取出队列中的第一个元素,判断左右括号是否匹配。如果不匹配,就返回 `False`。最后,如果队列中还有元素,说明表达式中有未匹配的左括号,返回 `False`,否则返回 `True`。
我们还定义了一个 `is_match` 函数,用来判断左右括号是否匹配。如果是一对匹配的括号,就返回 `True`,否则返回 `False`。
阅读全文