📑 题目:150. 逆波兰表达式求值

🚀 本题 LeetCode 传送门

题目大意

计算逆波兰表达式。

解题思路

这道题就是经典的考察栈的知识的题目。

代码

  1. package leetcode
  2. import (
  3. ""strconv""
  4. )
  5. func evalRPN(tokens []string) int {
  6. stack := make([]int, 0, len(tokens))
  7. for _, token := range tokens {
  8. v, err := strconv.Atoi(token)
  9. if err == nil {
  10. stack = append(stack, v)
  11. } else {
  12. num1, num2 := stack[len(stack)-2], stack[len(stack)-1]
  13. stack = stack[:len(stack)-2]
  14. switch token {
  15. case ""+"":
  16. stack = append(stack, num1+num2)
  17. case ""-"":
  18. stack = append(stack, num1-num2)
  19. case ""*"":
  20. stack = append(stack, num1*num2)
  21. case ""/"":
  22. stack = append(stack, num1/num2)
  23. }
  24. }
  25. }
  26. return stack[0]
  27. }