|
1 | | -class Solution(object): |
2 | | - def evalRPN(self, tokens): |
3 | | - stak = [] |
4 | | - for i in range(len(tokens)): |
5 | | - if not tokens[i] in "+-*/": |
6 | | - stak.append(int(tokens[i])) |
7 | | - continue |
8 | | - a, b = stak.pop(), stak.pop() |
9 | | - if tokens[i] == "+": |
10 | | - stak.append(b + a) |
11 | | - elif tokens[i] == "-": |
12 | | - stak.append(b - a) |
13 | | - elif tokens[i] == "*": |
14 | | - stak.append(b * a) |
15 | | - elif tokens[i] == "/": |
16 | | - stak.append(int(b / a)) |
17 | | - return stak.pop() |
| 1 | +def eval_rpn(tokens): |
| 2 | + stack = [] |
| 3 | + for i in range(len(tokens)): |
| 4 | + if tokens[i] not in "+-*/": |
| 5 | + stack.append(int(tokens[i])) |
| 6 | + continue |
| 7 | + a, b = stack.pop(), stack.pop() |
| 8 | + if tokens[i] == "+": |
| 9 | + stack.append(b + a) |
| 10 | + elif tokens[i] == "-": |
| 11 | + stack.append(b - a) |
| 12 | + elif tokens[i] == "*": |
| 13 | + stack.append(b * a) |
| 14 | + elif tokens[i] == "/": |
| 15 | + stack.append(int(b / a)) |
| 16 | + return stack.pop() |
18 | 17 |
|
19 | 18 |
|
20 | 19 | if __name__ == "__main__": |
21 | | - s = Solution() |
22 | | - print(s.evalRPN(["2", "1", "+", "3", "*"])) |
| 20 | + print(eval_rpn(["2", "1", "+", "3", "*"])) |
23 | 21 | # => 9 => (2+1)*3 |
24 | 22 | print( |
25 | | - s.evalRPN(["10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"]) |
| 23 | + eval_rpn(["10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"]) |
26 | 24 | ) |
27 | 25 | # => 22 |
28 | | - print(s.evalRPN(["4", "-2", "/", "2", "-3", "-", "-"])) |
| 26 | + print(eval_rpn(["4", "-2", "/", "2", "-3", "-", "-"])) |
29 | 27 | # => -7 |
0 commit comments