根据栈的结构特点,结合已提供的 stack(堆栈)类代码,完成以下括号左右匹配检查的实现。任务要求有效括号字符串需满足:1. 左括号(含英文大括号和英文小括号两种)必须用相同类型的右括号闭合;2. 左括号必须以正确的顺序闭合;3. 注意空字符串可被认为是有效字符串;4. 本任务考察栈的知识,请不要使用列表(list)的属性和功能; 5. 返回数据类型为布尔类型(bool); 6. 所匹配的字符串包含如下:{} [] () <>,均为英文字符。
时间: 2024-02-12 16:03:44 浏览: 24
好的,根据您的要求,以下是实现左右括号匹配检查的代码:
```python
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return len(self.items) == 0
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[-1]
def size(self):
return len(self.items)
def check_parentheses(string):
s = Stack()
for c in string:
if c in "{[<(":
s.push(c)
elif c in "}])>":
if s.is_empty():
return False
elif c == "}" and s.peek() == "{" or \
c == "]" and s.peek() == "[" or \
c == ">" and s.peek() == "<" or \
c == ")" and s.peek() == "(":
s.pop()
else:
return False
return s.is_empty()
```
您可以调用 `check_parentheses` 函数并传入一个字符串,函数将返回一个布尔值,表示该字符串中的左右括号是否匹配。该函数中使用了栈的特点,通过 `Stack` 类模拟栈的操作,遍历字符串中的每个字符,如果是左括号则入栈,如果是右括号则与栈顶元素进行匹配,如果匹配成功则弹出栈顶元素,如果匹配失败则返回 False。在遍历结束后,如果栈为空则表示左右括号匹配成功,否则表示匹配失败。