秋招笔试(其三)判断括号有效性

“”"
编程题目:写一段代码,判断包含括号 { [ ( ) ] } 的表达式是否合法
“”"

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))


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值