栈判断括号的思路:
遍历表达式中的每一个字符
如果是左括号,将左括号压入栈
如果是右括号,则判断栈是否为空,不为空则推出,为空就证明右括号没有匹配的项目,返回False
遍历结束之后判断栈是否为空,不为空则返回False,否则返回True
python完整代码实现如下:
class Stack():
def __init__(self):
self.data = []
def __len__(self):
return len(self.data)
def push(self,ele):
self.data.append(ele)
def pop(self):
return self.data.pop()
def is_empty(self):
return self.__len__() == 0
def parenthese_match(expression):
s = Stack()
for char in expression: # 遍历表达式中的每一个字符
if char == "(":
s.push(char)
elif char == ")":
if s.is_empty():
return False
else:
s.pop()
else:
pass
if s.is_empty():
return True
else:
return False