diff options
author | terminaldweller <thabogre@gmail.com> | 2022-12-17 04:59:32 +0000 |
---|---|---|
committer | terminaldweller <thabogre@gmail.com> | 2022-12-17 04:59:32 +0000 |
commit | 3225e95130f470a18f7d139ac584a298f94e8e35 (patch) | |
tree | d481a03f9dea7d175f2ec7d6ed3abcde25128768 | |
parent | 232 (diff) | |
download | leetcode-3225e95130f470a18f7d139ac584a298f94e8e35.tar.gz leetcode-3225e95130f470a18f7d139ac584a298f94e8e35.zip |
150
-rw-r--r-- | 150/go.mod | 5 | ||||
-rw-r--r-- | 150/go.sum | 2 | ||||
-rw-r--r-- | 150/main.go | 63 |
3 files changed, 70 insertions, 0 deletions
diff --git a/150/go.mod b/150/go.mod new file mode 100644 index 0000000..0248500 --- /dev/null +++ b/150/go.mod @@ -0,0 +1,5 @@ +module 150 + +go 1.19 + +require github.com/emirpasic/gods v1.18.1 diff --git a/150/go.sum b/150/go.sum new file mode 100644 index 0000000..b5ad666 --- /dev/null +++ b/150/go.sum @@ -0,0 +1,2 @@ +github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= diff --git a/150/main.go b/150/main.go new file mode 100644 index 0000000..1953134 --- /dev/null +++ b/150/main.go @@ -0,0 +1,63 @@ +package main + +import ( + "fmt" + "strconv" + + "github.com/emirpasic/gods/stacks/arraystack" +) + +func evalRPN(tokens []string) int { + st := arraystack.New() + for _, op := range tokens { + switch op { + case "+": + { + val1, _ := st.Pop() + val2, _ := st.Pop() + res := val1.(int) + val2.(int) + fmt.Printf("%d + %d = %d\n", val1, val2, res) + st.Push(res) + } + case "-": + { + val1, _ := st.Pop() + val2, _ := st.Pop() + res := val2.(int) - val1.(int) + fmt.Printf("%d - %d = %d\n", val2, val1, res) + st.Push(res) + } + case "*": + { + val1, _ := st.Pop() + val2, _ := st.Pop() + res := val1.(int) * val2.(int) + fmt.Printf("%d * %d = %d\n", val1, val2, res) + st.Push(res) + } + case "/": + { + val1, _ := st.Pop() + val2, _ := st.Pop() + res := val2.(int) / val1.(int) + fmt.Printf("%d / %d = %d\n", val2, val1, res) + st.Push(res) + } + default: + { + val1, _ := strconv.Atoi(op) + st.Push(val1) + } + } + } + + final, _ := st.Pop() + + return final.(int) +} + +func main() { + fmt.Println(evalRPN([]string{"2", "1", "+", "3", "*"})) + fmt.Println(evalRPN([]string{"4", "13", "5", "/", "+"})) + fmt.Println(evalRPN([]string{"10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"})) +} |