[LeetCode]Evaluate Reverse Polish Notation

本文介绍了一种利用栈的数据结构解决逆波兰表达式求值问题的方法,通过遍历表达式中的每个元素并进行相应的运算操作,实现了有效的括号处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Evaluate the value of an arithmetic expression in Reverse Polish Notation.

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
Solution: Use Stack (mostly for Parentheses processing )
Running Time: O(n)
class Solution:
    # @param tokens, a list of string
    # @return an integer
    def isInt(self, s):
        try:
            int(s)
            return True
        except ValueError:
            return False
            
    
    def evalRPN(self, tokens):
        tempStack = []
        for element in tokens:
            if self.isInt(element):
                tempStack.append(int(element))
            else:
                b = tempStack.pop()
                a = tempStack.pop()
                if element == '+':
                    c = a + b
                elif element == '-':
                    c = a - b
                elif element == '*':
                    c = a * b
                elif element == '/':
                    try:
                        c = int(float(a) / b)#in python -6/132 = -1, but the answer here require 0 as result
                    except ValueError:
                        print "Error: divisor cannot be 0."
                tempStack.append(c)
        return int(tempStack.pop())

对于括号处理,通常使用Stack作为容器。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值