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