150. 逆波兰表达式求值 python

给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。

请你计算该表达式。返回一个表示表达式值的整数。

注意:

  • 有效的算符为 '+''-''*' 和 '/' 。
  • 每个操作数(运算对象)都可以是一个整数或者另一个表达式。
  • 两个整数之间的除法总是 向零截断 。
  • 表达式中不含除零运算。
  • 输入是一个根据逆波兰表示法表示的算术表达式。
  • 答案及所有中间计算结果可以用 32 位 整数表示。

向零取整(向零截断) 取距离0最近的精确整数值。

class Solution:
    def evalRPN(self, tokens: List[str]) -> int:
        res = []
        for item in tokens:
            if item == '+' or item == '-' or item == '*' or item == '/':
                nums1 = res.pop()
                nums2 = res.pop()
                if item == '+':
                    res.append(nums1 + nums2)
                if item == '-':
                    res.append(nums2 - nums1)
                    # 注意不是nums1 - nums2 因为pop的顺序
                if item == '*':
                    res.append(nums1 * nums2)
                if item == '/':
                    # res.append(nums2 // nums1)
                    # 上式不对。例如6/(-132)结果本来应该是0但是这个除法(//)(也称地板除)会得到-1的结果。正确应该是:
                    res.append(int(nums2 / nums1))
            else:
                res.append(int(item))
        return res.pop()
eval()是python中功能非常强大的一个函数
  • 将字符串当成有效的表达式来求值,并返回计算结果
  • 所谓表达式就是:eval这个函数会把里面的字符串参数的引号去掉,把中间的内容当成Python的代码,eval函数会执行这段代码并且返回执行结果

stack.append( int(eval(f'{second_num} {item} {first_num}'))) 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值