博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode150. Evaluate Reverse Polish Notation(思路及python解法)
阅读量:2241 次
发布时间:2019-05-09

本文共 1335 字,大约阅读时间需要 4 分钟。

Evaluate the value of an arithmetic expression in .

Valid operators are +-*/. Each operand may be an integer or another expression.

Note:

  • Division between two integers should truncate toward zero.
  • The given RPN expression is always valid. That means the expression would always evaluate to a result and there won't be any divide by zero operation.

Example 1:

Input: ["2", "1", "+", "3", "*"]Output: 9Explanation: ((2 + 1) * 3) = 9

Example 2:

Input: ["4", "13", "5", "/", "+"]Output: 6Explanation: (4 + (13 / 5)) = 6

用一个stack来存储数字和符号。

遇到符号时,把前两个数字pop()出来进行计算。

python比较闹心的就是除法上,3//2=1, -3//2=-2。所以我直接都转为正数进行计算,再加入符号。

class Solution(object):    def evalRPN(self, tokens):        """        :type tokens: List[str]        :rtype: int        """        if len(tokens)==0:return        stack=[]                for c in tokens:            if c in '+-*/':                b=int(stack.pop())                a=int(stack.pop())                if c=='+':                    stack.append(a+b)                elif c=='-':                    stack.append(a-b)                elif c=='*':                    stack.append(a*b)                else:                    num=abs(a)//abs(b)                    sym=-1 if a*b<0 else 1                    stack.append(sym*num)            else:                stack.append(c)                return stack[0]

 

转载地址:http://bjrbb.baihongyu.com/

你可能感兴趣的文章
Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型
查看>>
Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)
查看>>
深入理解JVM虚拟机1:JVM内存的结构与消失的永久代
查看>>
深入理解JVM虚拟机3:垃圾回收器详解
查看>>
深入理解JVM虚拟机4:Java class介绍与解析实践
查看>>
深入理解JVM虚拟机5:虚拟机字节码执行引擎
查看>>
深入理解JVM虚拟机6:深入理解JVM类加载机制
查看>>
深入了解JVM虚拟机8:Java的编译期优化与运行期优化
查看>>
深入理解JVM虚拟机9:JVM监控工具与诊断实践
查看>>
深入理解JVM虚拟机10:JVM常用参数以及调优实践
查看>>
深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
查看>>
深入理解JVM虚拟机13:再谈四种引用及GC实践
查看>>
Spring源码剖析1:Spring概述
查看>>
Spring源码剖析2:初探Spring IOC核心流程
查看>>
Spring源码剖析5:JDK和cglib动态代理原理详解
查看>>
Spring源码剖析6:Spring AOP概述
查看>>
【Linux】进程的理解(二)
查看>>
【Linux】vim的简单配置
查看>>
【C++】构造函数、析构函数抛出异常的问题
查看>>
【C++】关于vector<bool>
查看>>