本文共 1335 字,大约阅读时间需要 4 分钟。
Evaluate the value of an arithmetic expression in .
Valid operators are +
, -
, *
, /
. Each operand may be an integer or another expression.
Note:
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/