一、题目内容

image.png

二、题解

解法1:

思路

使用栈,遇见数字入栈,遇见符号,弹出两个数字做运算,然后将结果入栈

代码

  1. class Solution {
  2. public int evalRPN(String[] tokens) {
  3. Stack<Integer> stack = new Stack<Integer>();
  4. for(String token: tokens){
  5. if(isNumber(token)){
  6. stack.push(Integer.parseInt(token));
  7. }else{
  8. Integer num1 = stack.pop();
  9. Integer num2 = stack.pop();
  10. switch (token) {
  11. case "+":
  12. stack.push(num1 + num2);
  13. break;
  14. case "-":
  15. stack.push(num1 - num2);
  16. break;
  17. case "*":
  18. stack.push(num1 * num2);
  19. break;
  20. case "/":
  21. stack.push(num1 / num2);
  22. break;
  23. default:
  24. }
  25. }
  26. }
  27. return stack.pop();
  28. }
  29. public boolean isNumber(String token) {
  30. return !("+".equals(token) || "-".equals(token) || "*".equals(token) || "/".equals(token));
  31. }
  32. }