import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 给定一个后缀表达式,返回它的结果
* @param str string字符串
* @return long长整型
*/
public long legalExp (String str) {
Stack<Long> stack = new Stack<>();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c == '#') {
// 遇到结束符,将构建的数字入栈
if (sb.length() > 0) {
long num = Long.parseLong(sb.toString());
stack.push(num);
sb.setLength(0); // 重置用于下一个数字
}
} else if (c == '+' || c == '-' || c == '*') {
// 遇到运算符,弹出两个操作数进行计算
long b = stack.pop();
long a = stack.pop();
long result = 0;
switch (c) {
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '*':
result = a * b;
break;
}
stack.push(result);
} else {
// 数字字符,继续构建数字(包括可能的负号)
sb.append(c);
}
}
// 栈顶元素即为最终结果
return stack.pop();
}
}