| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | 
							- package main
 
- import (
 
- 	"strconv"
 
- )
 
- func evalRPN(tokens []string) int {
 
- 	length := len(tokens)
 
- 	if length == 0 {
 
- 		return 0
 
- 	}
 
- 	vals := make([]int, 0)
 
- 	for i := 0; i < length; i++ {
 
- 		switch tokens[i] {
 
- 		case "+":
 
- 			size := len(vals)
 
- 			a, b := vals[size-2], vals[size-1]
 
- 			vals = vals[:size-2]
 
- 			vals = append(vals, a+b)
 
- 		case "-":
 
- 			size := len(vals)
 
- 			a, b := vals[size-2], vals[size-1]
 
- 			vals = vals[:size-2]
 
- 			vals = append(vals, a-b)
 
- 		case "*":
 
- 			size := len(vals)
 
- 			a, b := vals[size-2], vals[size-1]
 
- 			vals = vals[:size-2]
 
- 			vals = append(vals, a*b)
 
- 		case "/":
 
- 			size := len(vals)
 
- 			a, b := vals[size-2], vals[size-1]
 
- 			vals = vals[:size-2]
 
- 			vals = append(vals, a/b)
 
- 		default:
 
- 			val, _ := strconv.Atoi(tokens[i])
 
- 			vals = append(vals, val)
 
- 		}
 
- 	}
 
- 	return vals[0]
 
- }
 
- // func main() {
 
- // 	println(evalRPN([]string{ // The answer: 22
 
- // 		"10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"}))
 
- // }
 
 
  |