LeetCode 150. 逆波兰表达式求值
题目描述
思路分析
注意:两个整数之间的除法只保留整数部分
方法一:使用栈
参考代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
func evalRPN(tokens []string) int {
var stack []int
for _, token := range tokens {
if isOperator(token) {
operand2 := stack[len(stack)-1]
operand1 := stack[len(stack)-2]
stack = stack[:len(stack)-2] // 弹出两个操作数
result := performOperation(token, operand1, operand2)
stack = append(stack, result)
} else {
num, _ := strconv.Atoi(token)
stack = append(stack, num)
}
}
return stack[0]
}
func isOperator(token string) bool {
return token == "+" || token == "-" || token == "*" || token == "/"
}
func performOperation(operator string, operand1, operand2 int) int {
switch operator {
case "+":
return operand1 + operand2
case "-":
return operand1 - operand2
case "*":
return operand1 * operand2
case "/":
return operand1 / operand2
}
return 0
}
1
write your code here
CC BY-NC-SA 4.0
许可协议,转载请注明出处!
本博客所有文章除特别声明外,均采用