美文网首页
逆波兰表示法 Python

逆波兰表示法 Python

作者: vckah | 来源:发表于2018-09-16 20:51 被阅读0次

    给定一个逆波兰表示法,计算表达式的值。

    逆波兰表示:又名后缀表达式,二元运算符置于两个运算对象之后,例如 2 + 1 写作 2 1 +,3 * 4 写作 3 4 *(2 + 1) * 3写作 2 1 + 3 *

    解题思路:利用栈的思想。两个数在栈顶,紧跟着运算符,只需将栈顶的两个数弹出,然后运算即可。

    def calucate(s):
        stack = []
        opers = ['+', '-', '*', '/']
        for c in s:
            if c not in opers:
                stack.append(int(char))
            else:
                top1 = stack.pop()
                top2 = stack.pop()
                if c == '+':
                    stack.append(top2 + top1)
                elif c == '-':
                    stack.append(top2 - top1)
                elif c == '*':
                    stack.append(top2 * top1)
                elif c == '/':
                    stack.append(int(top2 / top1))
        return stack.pop()
    
    if __name__ == '__main__':
        # s = input().split()
        s = '2 1 + 3 *'
        print(calucate(s))
    

    相关文章

      网友评论

          本文标题:逆波兰表示法 Python

          本文链接:https://www.haomeiwen.com/subject/ybifnftx.html