题解 | 牛牛与后缀表达式-Java

牛牛与后缀表达式

https://www.nowcoder.com/practice/a1a4f178f6ff4188890e51da1cc8ce10

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

全部评论

相关推荐

09-22 15:45
门头沟学院 Java
谁给娃offer我给...:我也遇到了,我说只要我通过面试我就去,实际上我根本就不会去😁
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务