知名的网站制作公司需要多少钱珠海做网站的公司
1.题目描述
2.思路
(1)遇到数字,将数字压入栈中,遵循先进后出得策略
(2)遇到运算符,先从栈顶弹出两个元素,进行计算,把结果压入栈中
例子1:
3.代码实现
class Solution {public int evalRPN(String[] tokens) {Stack<Integer> s=new Stack<>();for(String token:tokens){ //tokens是字符串,有运算符也有数字if(isOperator(token)){int b=s.pop(); //出栈顺序b,aint a=s.pop();s.push(applyOperator(a,b,token)); //b,a做运算之后,把结果压入栈中,参数的顺序和构造方法一样}else{s.push(Integer.parseInt(token));//如果token不是运算符,也就是操作数,直接压入栈中}}return s.pop();//栈中最终只会剩下一个元素,这就是计算结果//return s.peek();//可以查看最后返回的栈顶元素}private boolean isOperator(String token){return token.equals("+")||token.equals("-")||token.equals("*")||token.equals("/");//return "+-*/".contains(token);}private int applyOperator(int a, int b, String op)//入栈顺序a,b{switch(op){case"+": return a+b;case"-":return a-b;case"*":return a*b;case"/":return a/b;default:throw new IllegalArgumentException("无效的运算符: " +op);}}}