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
| func evalRPN(tokens []string) int { var stack []int for _, v := range tokens { if isDigit(v) { num, _ := strconv.Atoi(v) stack = append(stack, num) } else { a, b := stack[len(stack)-2], stack[len(stack)-1] stack = stack[:len(stack)-2] switch v { case "+": stack = append(stack, a+b) case "-": stack = append(stack, a-b) case "*": stack = append(stack, a*b) case "/": stack = append(stack, a/b) } } } return stack[0] }
func isDigit(val string) bool { for _, v := range val { if unicode.IsDigit(v) { return true } } return false }
|