优化这段代码:class Stack: def __init__(self): self.stack=[] def push(self,element): self.stack.append(element) def pop(self): if len(self.stack)>0: return self.stack.pop() def get_top(self): if len(self.stack)>0: return self.stack(-1) else : return None def is_empty(self): return len(self.stack)==0 def brace_match(s): match={')':'(',']':'[','}':'{'} stack=Stack() for ch in s: if ch in {'(','[','{'}: stack.push(ch) else: if stack.is_empty(): return False elif stack.get_top() == match[ch]: stack.pop() else: return False if stack.is_empty(): return True else: return False # match={')':'(',']':'[','}':'{'} # print(match[')']) print(brace_match('()'))
时间: 2023-04-10 15:04:37 浏览: 145
优化后的代码如下:
class Stack:
def __init__(self):
self.stack = []
def push(self, element):
self.stack.append(element)
def pop(self):
if self.stack:
return self.stack.pop()
def get_top(self):
if self.stack:
return self.stack[-1]
def is_empty(self):
return not self.stack
def brace_match(s):
match = {')': '(', ']': '[', '}': '{'}
stack = Stack()
for ch in s:
if ch in {'(', '[', '{'}:
stack.push(ch)
else:
if stack.is_empty() or stack.get_top() != match[ch]:
return False
stack.pop()
return stack.is_empty()
相关问题
检查这段代码:class Stack: def __init__(self): self.stack=[] def push(self,element): self.stack.append(element) def pop(self): if len(self.stack)>0: return self.stack.pop() def get_top(self): if len(self.stack)>0: return self.stack(-1) else : return None def is_empty(self): return len(self.stack)==0 def brace_match(s): match={')':'(',']':'[','}':'{'} stack=Stack() for ch in s: if ch in {'(','[','{'}: stack.push(ch) else: if stack.is_empty(): return False elif stack.get_top() == match[ch]: stack.pop() else: return False if stack.is_empty(): return True else: return False # match={')':'(',']':'[','}':'{'} # print(match[')']) print(brace_match('()'))
这段代码定义了一个名为Stack的类,其中包含了push、pop、get_top和is_empty等方法,用于实现栈的基本操作。另外,还定义了一个名为brace_match的函数,用于判断输入的字符串中的括号是否匹配。在brace_match函数中,首先定义了一个字典match,用于存储各种括号的匹配关系。然后,遍历输入的字符串s,如果遇到左括号,则将其入栈;如果遇到右括号,则判断栈是否为空,如果为空则返回False,否则判断栈顶元素是否与该右括号匹配,如果匹配则将栈顶元素出栈,否则返回False。最后,如果栈为空,则说明所有括号都匹配,返回True,否则返回False。
class Stack: def __init__(self): self.stack=[] def push(self,element): self.stack.append(element) def pop(self): if len(self.stack)>0: return self.stack.pop() def get_top(self): if len(self.stack)>0: return self.stack(-1) else : return None def is_empty(self): return len(self.stack)==0 def brace_match(s): match={')':'(',']':'[','}':'{'} stack=Stack() for ch in s: if ch in {'(','[','{'}: stack.push(ch) else: if stack.is_empty(): return False elif stack.get_top() == match[ch]: stack.pop() else: return False if stack.is_empty(): return True else: return False # match={')':'(',']':'[','}':'{'} # print(match[')']) print(brace_match('()'))
这段代码定义了一个栈(Stack)类,包括初始化方法(__init__)、入栈方法(push)、出栈方法(pop)、获取栈顶元素方法(get_top)和判断栈是否为空方法(is_empty)。同时还定义了一个括号匹配函数(brace_match),该函数接受一个字符串参数s,遍历字符串中的每个字符,如果是左括号则入栈,如果是右括号则判断栈顶元素是否与其匹配,如果匹配则出栈,否则返回False。最后判断栈是否为空,如果为空则返回True,否则返回False。
阅读全文