思路还是很简单的,对字符串转为字符数组,遍历将数字存入栈中,遇到运算符则出栈两个进行运算(注意是后出的那个数在前面,不要反了顺序,要不然减***出错),运算完再鸭压入栈中,最后输出栈顶元素即可

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 给定一个后缀表达式,返回它的结果
     * @param str string字符串 
     * @return long长整型
     */
   public static long solve (String str) {
            // write code here
        Stack<Long> queueNum=new Stack<>();
        char [] strs=str.toCharArray();
        //System.out.println(Arrays.toString(strs));
        long a1,a2;
        String x="";
        for(int i=0;i<strs.length;i++) {
            if(strs[i]<='9'&&strs[i]>='0') {
                x=x+strs[i];
                System.out.println(x);
            }
            else if(strs[i]=='#') {
                queueNum.push(Long.parseLong(x));
                x="";
            }
            else{
                a1=queueNum.pop();
                a2=queueNum.pop();   
                if(strs[i]=='+')
                    queueNum.push(a2+a1);
                else if(strs[i]=='-')
                    queueNum.push(a2-a1);
                else 
                    queueNum.push(a2*a1);
            }
            //System.out.println(queueNum);
        }
        return queueNum.peek();
    }
}