“”"
编程题目:写一段代码,判断包含括号 { [ ( ) ] } 的表达式是否合法
“”"
def judge(expression):
s = Stack()
true = "true"
flase = "false"
d = {'}': '{', ']': '[', ')': '('}
for i in expression:
if i == '[' or i == '{' or i == '(':
s.push(i)
if i == ']' or i == '}' or i == ')':
# 当遍历到后括号时,发现栈里没有数据
# 说明表达式有问题
if s.is_empty():
return flase
# 或者出栈的数据和后括号对应的前括号不一样
# 则表达式也有问题
elif s.pop() != d[i]:
return flase
# 遍历玩表达式后,要再次判断一下栈是否为空
# 如果不为空,说明表达式有问题。
if not s.is_empty():
return flase
else:
return true
class Stack(object):
def __init__(self):
self._elems = []
def is_empty(self):
return self._elems == []
def push(self, elem):
self._elems.append(elem)
def pop(self):
if self.is_empty():
raise ValueError
return self._elems.pop()
def peek(self):
if self.is_empty():
raise ValueError
return self._elems[-1]
if __name__ == "__main__":
ep = input()
print(judge(ep))