题解 | #逆波兰表达式求值#

逆波兰表达式求值

http://www.nowcoder.com/practice/885c1db3e39040cbae5cdf59fb0e9382

逆波兰表达式计算

  • 维持一个栈,存储操作数
  • 遇到操作数则入栈
  • 遇到运算符,则从弹出两个操作数进行计算,并将结果再存入栈中

注:这道题的除非运算,必须取整(四舍五入),即用int(b/a),而不能用b//a,双斜杠都是向下取整。

# 
# @param tokens string字符串一维数组 
# @return int整型
#
class Solution:
    def evalRPN(self , tokens: List[str]) -> int:
        stack = []  # 存储操作数
        for i in tokens:
            if i in "+-*/":
                a = stack.pop()
                b = stack.pop()
                # 加减乘除
                if i == '+':
                    stack.append(b+a)
                elif i == '-':
                    stack.append(b-a)
                elif i == '*':
                    stack.append(b*a)
                else:
                    stack.append(int(b/a))  # 取整,四舍五入
            else:
                stack.append(int(i))
        return stack[0]
                
全部评论

相关推荐

1 1 评论
分享
牛客网
牛客企业服务