2023-12-09 18:42:21 +08:00
< p > You are given an array of strings < code > tokens< / code > that represents an arithmetic expression in a < a href = "http://en.wikipedia.org/wiki/Reverse_Polish_notation" target = "_blank" > Reverse Polish Notation< / a > .< / p >
2022-03-27 20:56:26 +08:00
2023-12-09 18:42:21 +08:00
< p > Evaluate the expression. Return < em > an integer that represents the value of the expression< / em > .< / p >
2022-03-27 20:56:26 +08:00
2023-12-09 18:42:21 +08:00
< p > < strong > Note< / strong > that:< / p >
2022-03-27 20:56:26 +08:00
2023-12-09 18:42:21 +08:00
< ul >
< li > The valid operators are < code > ' +' < / code > , < code > ' -' < / code > , < code > ' *' < / code > , and < code > ' /' < / code > .< / li >
< li > Each operand may be an integer or another expression.< / li >
< li > The division between two integers always < strong > truncates toward zero< / strong > .< / li >
< li > There will not be any division by zero.< / li >
< li > The input represents a valid arithmetic expression in a reverse polish notation.< / li >
< li > The answer and all the intermediate calculations can be represented in a < strong > 32-bit< / strong > integer.< / li >
< / ul >
2022-03-27 20:56:26 +08:00
< p > < / p >
2023-12-09 18:42:21 +08:00
< p > < strong class = "example" > Example 1:< / strong > < / p >
2022-03-27 20:56:26 +08:00
< pre >
< strong > Input:< / strong > tokens = [" 2" ," 1" ," +" ," 3" ," *" ]
< strong > Output:< / strong > 9
< strong > Explanation:< / strong > ((2 + 1) * 3) = 9
< / pre >
2023-12-09 18:42:21 +08:00
< p > < strong class = "example" > Example 2:< / strong > < / p >
2022-03-27 20:56:26 +08:00
< pre >
< strong > Input:< / strong > tokens = [" 4" ," 13" ," 5" ," /" ," +" ]
< strong > Output:< / strong > 6
< strong > Explanation:< / strong > (4 + (13 / 5)) = 6
< / pre >
2023-12-09 18:42:21 +08:00
< p > < strong class = "example" > Example 3:< / strong > < / p >
2022-03-27 20:56:26 +08:00
< pre >
< strong > Input:< / strong > tokens = [" 10" ," 6" ," 9" ," 3" ," +" ," -11" ," *" ," /" ," *" ," 17" ," +" ," 5" ," +" ]
< strong > Output:< / strong > 22
< strong > Explanation:< / strong > ((10 * (6 / ((9 + 3) * -11))) + 17) + 5
= ((10 * (6 / (12 * -11))) + 17) + 5
= ((10 * (6 / -132)) + 17) + 5
= ((10 * 0) + 17) + 5
= (0 + 17) + 5
= 17 + 5
= 22
< / pre >
< p > < / p >
< p > < strong > Constraints:< / strong > < / p >
< ul >
< li > < code > 1 < = tokens.length < = 10< sup > 4< / sup > < / code > < / li >
< li > < code > tokens[i]< / code > is either an operator: < code > " +" < / code > , < code > " -" < / code > , < code > " *" < / code > , or < code > " /" < / code > , or an integer in the range < code > [-200, 200]< / code > .< / li >
< / ul >