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(); } }