150. Reverse Polish expression evaluation---JAVA---LeetCode

class Solution {
    
    
    public int evalRPN(String[] tokens) {
    
    
        //创建一个栈,只需要一个栈即可
        Stack<Integer> stack = new Stack<>();
        //遍历 ls
        for(String item:tokens){
    
    
            //这里使用正则表达式来取出数
            if(isNumber(item)){
    
    //匹配的是多位数
                //入栈
                     stack.push(Integer.parseInt(item));
            }else {
    
    
                //pop出两个数,并运算,再入栈
                int num2=stack.pop();
                int num1=stack.pop();
                int res=0;
                if(item.equals("+")){
    
    
                    res=num1+num2;
                }else if(item.equals("-")){
    
    
                    res=num1-num2;
                }else if(item.equals("*")){
    
    
                    res=num1*num2;
                }else if(item.equals("/")){
    
    
                    res=num1/num2;
                }
                //把res入栈
                stack.push(res);
            }
        }
        //最后留在stack中的数据就是运算结果
        return stack.pop();
    }
        public boolean isNumber(String token) {
    
    
        return !("+".equals(token) || "-".equals(token) || "*".equals(token) || "/".equals(token));
    }
}


Note: the
character string is converted to a number.
Method 1
Insert picture description here
Method 2
Insert picture description here

Guess you like

Origin blog.csdn.net/qq_45783660/article/details/115035204