博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[leetcode]Evaluate Reverse Polish Notation @ Python
阅读量:6809 次
发布时间:2019-06-26

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

原题地址:https://oj.leetcode.com/problems/evaluate-reverse-polish-notation/

题意:

Evaluate the value of an arithmetic expression in .

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

Some examples:

["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9  ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6

解题思路:这道题是经典的逆波兰式求值。具体思路是:开辟一个空栈,遇到数字压栈,遇到运算符弹出栈中的两个数进行运算,并将运算结果压栈,最后栈中只剩下一个数时,就是所求结果。这里需要注意的一点是python中的'/'除法和c语言不太一样。在python中,(-1)/2=-1,而在c语言中,(-1)/2=0。也就是c语言中,除法是向零取整,即舍弃小数点后的数。而在python中,是向下取整的。而这道题的oj是默认的c语言中的语法,所以需要在遇到'/'的时候注意一下。

代码:

class Solution:    # @param tokens, a list of string    # @return an integer    def evalRPN(self, tokens):        stack = []        for i in range(0,len(tokens)):            if tokens[i] != '+' and tokens[i] != '-' and tokens[i] != '*' and tokens[i] != '/':                stack.append(int(tokens[i]))            else:                a = stack.pop()                b = stack.pop()                if tokens[i] == '+':                    stack.append(a+b)                if tokens[i] == '-':                    stack.append(b-a)                if tokens[i] == '*':                    stack.append(a*b)                if tokens[i] == '/':                    if a*b < 0:                        stack.append(-((-b)/a))                    else:                        stack.append(b/a)        return stack.pop()

 

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

你可能感兴趣的文章
版本管理工具git的使用总结
查看>>
阿里云容器服务Kubernetes之Jenkins X(2)-自动化CICD实践篇
查看>>
彩铅,梦境
查看>>
图解SSH原理及两种登录方法
查看>>
JavaScript—模块化(26)
查看>>
IOS错误---“A valid provisioning profile for this executable was not found”
查看>>
NLP学习------HanLP使用实验
查看>>
JavaScript 学习笔记一 (入门篇)
查看>>
AngularJS的内置过滤器 1
查看>>
expect实现自动通过堡垒机登陆
查看>>
闲谈 Kubernetes 的主要特性和经验分享
查看>>
云集新功能:移动 Web 调试从未变得如此简单
查看>>
JSP学习记录
查看>>
zookeeper基本安装文档
查看>>
知产新观察 | 商家要敢于向知产流氓及恶意投诉说不!
查看>>
c语言新手的无奈,几个新手容易犯的错误
查看>>
一文读懂如何用深度学习实现网络安全
查看>>
IntelliJ IDEA 2019.1 EAP5 发布,Maven 构建输出统一查看
查看>>
springmvc和activemq的整合使用
查看>>
00-JavaScript基础-基本概念
查看>>