leetcode150.逆波兰表达式求值

核能气质少年 提交于 2019-12-15 19:22:55

1.题目描述

实现一个基本的计算器来计算一个简单的字符串表达式的值。

字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格  。 整数除法仅保留整数部分。

示例 1:

输入: "3+2*2"
输出: 7
示例 2:

输入: " 3/2 "
输出: 1
示例 3:

输入: " 3+5 / 2 "
输出: 5
说明:

你可以假设所给定的表达式都是有效的。
请不要使用内置的库函数 eval。

2.解题思路

参考链接:https://leetcode-cn.com/problems/evaluate-reverse-polish-notation/solution/ji-yu-zhan-qiu-jie-by-jalan/

3.代码实现

class Solution(object):
    def evalRPN(self, tokens):
        """
        :type tokens: List[str]
        :rtype: int
        """
        stack = []
        for token in tokens:
            if token == "+" or token == "-" or token == "*" or token == "/":
                sec = stack.pop(-1)
                fir = stack.pop(-1)
                if token == "+":
                    ans = fir + sec
                elif token == "-":
                    ans = fir - sec
                elif token == "*":
                    ans = fir * sec
                else:
                    if fir * sec < 0:
                        ans = -(-fir/sec)
                    else:
                        ans = fir/sec
                stack.append(ans)
            else:
                stack.append(int(token))
        return stack[-1]
                
                

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!