逆波兰表示法 Python

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

逆波兰表示:又名后缀表达式,二元运算符置于两个运算对象之后,例如 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))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容