clean up redundant code

This commit is contained in:
novahe
2021-05-31 23:40:55 +08:00
parent ad3dfff270
commit 5cd43244e9
2 changed files with 34 additions and 80 deletions

View File

@ -5,46 +5,23 @@ import (
) )
func evalRPN(tokens []string) int { func evalRPN(tokens []string) int {
if len(tokens) == 1 { stack := make([]int, 0, len(tokens))
i, _ := strconv.Atoi(tokens[0]) for _, token := range tokens {
return i v, err := strconv.Atoi(token)
} if err == nil {
stack, top := []int{}, 0 stack = append(stack, v)
for _, v := range tokens { } else {
switch v { num1, num2 := stack[len(stack)-2], stack[len(stack)-1]
case "+": stack = stack[:len(stack)-2]
{ switch token {
sum := stack[top-2] + stack[top-1] case "+":
stack = stack[:top-2] stack = append(stack, num1+num2)
stack = append(stack, sum) case "-":
top-- stack = append(stack, num1-num2)
} case "*":
case "-": stack = append(stack, num1*num2)
{ case "/":
sub := stack[top-2] - stack[top-1] stack = append(stack, num1/num2)
stack = stack[:top-2]
stack = append(stack, sub)
top--
}
case "*":
{
mul := stack[top-2] * stack[top-1]
stack = stack[:top-2]
stack = append(stack, mul)
top--
}
case "/":
{
div := stack[top-2] / stack[top-1]
stack = stack[:top-2]
stack = append(stack, div)
top--
}
default:
{
i, _ := strconv.Atoi(v)
stack = append(stack, i)
top++
} }
} }
} }

View File

@ -66,46 +66,23 @@ import (
) )
func evalRPN(tokens []string) int { func evalRPN(tokens []string) int {
if len(tokens) == 1 { stack := make([]int, 0, len(tokens))
i, _ := strconv.Atoi(tokens[0]) for _, token := range tokens {
return i v, err := strconv.Atoi(token)
} if err == nil {
stack, top := []int{}, 0 stack = append(stack, v)
for _, v := range tokens { } else {
switch v { num1, num2 := stack[len(stack)-2], stack[len(stack)-1]
case "+": stack = stack[:len(stack)-2]
{ switch token {
sum := stack[top-2] + stack[top-1] case "+":
stack = stack[:top-2] stack = append(stack, num1+num2)
stack = append(stack, sum) case "-":
top-- stack = append(stack, num1-num2)
} case "*":
case "-": stack = append(stack, num1*num2)
{ case "/":
sub := stack[top-2] - stack[top-1] stack = append(stack, num1/num2)
stack = stack[:top-2]
stack = append(stack, sub)
top--
}
case "*":
{
mul := stack[top-2] * stack[top-1]
stack = stack[:top-2]
stack = append(stack, mul)
top--
}
case "/":
{
div := stack[top-2] / stack[top-1]
stack = stack[:top-2]
stack = append(stack, div)
top--
}
default:
{
i, _ := strconv.Atoi(v)
stack = append(stack, i)
top++
} }
} }
} }