classSolution{publicintevalRPN(String[] tokens){Deque<Integer> deque=newLinkedList<>();String rpn ="+-*/";//符号集 用来判断扫描的是否为运算符int sum =0;for(int i =0; i < tokens.length ; i++){if(!rpn.contains(tokens[i])) deque.push(Integer.valueOf(tokens[i]));// 如果当前字符不为运算符 则直接入栈 else{// 如果当前字符为运算符 则将栈顶两个元素弹出 根据 后出 +-*/ 先出 的规则运算,再将结果压入栈中sum =eval(tokens[i],deque);deque.push(sum);}}return deque.peek();//最后遍历完字符数组 最后栈中的唯一元素就是最终结果}//匹配运算publicinteval(String s ,Deque<Integer> deque){int first = deque.pop();int second = deque.pop();if(s.equals("+")){return second + first;}elseif(s.equals("-")){return second - first;}elseif(s.equals("*")){return second * first;}else{return second / first;}}}