-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path150.go
45 lines (42 loc) · 891 Bytes
/
150.go
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
35
36
37
38
39
40
41
42
43
44
45
package main
import (
"fmt"
"strconv"
)
func evalRPN(tokens []string) int {
var nums []int
for _, str := range tokens {
len := len(nums)
if str == "+" {
num := nums[len-2] + nums[len-1]
nums = nums[0 : len-2]
nums = append(nums, num)
continue
}
if str == "-" {
num := nums[len-2] - nums[len-1]
nums = nums[0 : len-2]
nums = append(nums, num)
continue
}
if str == "*" {
num := nums[len-2] * nums[len-1]
nums = nums[0 : len-2]
nums = append(nums, num)
continue
}
if str == "/" {
num := nums[len-2] / nums[len-1]
nums = nums[0 : len-2]
nums = append(nums, num)
continue
}
num, _ := strconv.Atoi(str)
nums = append(nums, num)
}
return nums[0]
}
func main() {
fmt.Print(evalRPN([]string{"4", "13", "5", "/", "+"}))
fmt.Print(evalRPN([]string{"10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"}))
}