题目
思路
构造一个栈,遇到运算符就弹出进行运算
class Solution { public int evalRPN(String[] tokens) { Deque<Integer> stack = new ArrayDeque<>(); for(String s : tokens){ int num1,num2; //正则表达式匹配数字 if(s.matches("\\d+")){ int num = Integer.parseInt(s); stack.push(num); }else if(s.length()>1 && s.charAt(0)=='-'){//匹配负数 int num = Integer.parseInt(s); stack.push(num); }else{ switch(s){ case "+": num1 = stack.pop(); num2 = stack.pop(); stack.push(num1+num2); break; case "-": num1 = stack.pop(); num2 = stack.pop(); stack.push(num2-num1); break; case "*": num1 = stack.pop(); num2 = stack.pop(); stack.push(num1*num2); break; case "/": num1 = stack.pop(); num2 = stack.pop(); stack.push(num2/num1); break; } } } return stack.pop(); } }