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