LeetCode第150题 – 逆波兰表达式求值

121 views

题目

根据 逆波兰表示法,求表达式的值。

有效的运算符包括 +-*/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。

说明:

  • 整数除法只保留整数部分。
  • 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。

解答

int evalRPN(String[] tokens) {
    if (tokens == null || tokens.length == 0) {
        return 0;
    }

    Stack<String> stack = new Stack<>();
    for (int i = 0, length = tokens.length; i < length; ++i) {
        String token = tokens[i];

        switch (token) {
        case "+": {
            String v1 = stack.pop();
            String v2 = stack.pop();
            stack.push(String.valueOf(Integer.parseInt(v1) + Integer.parseInt(v2)));
        }
            break;
        case "-": {
            String v1 = stack.pop();
            String v2 = stack.pop();

            stack.push(String.valueOf(Integer.parseInt(v2) - Integer.parseInt(v1)));
        }
            break;
        case "*": {
            String v1 = stack.pop();
            String v2 = stack.pop();
            stack.push(String.valueOf(Integer.parseInt(v2) * Integer.parseInt(v1)));
        }
            break;
        case "/": {
            String v1 = stack.pop();
            String v2 = stack.pop();
            stack.push(String.valueOf(Integer.parseInt(v2) / Integer.parseInt(v1)));
        }
            break;
        default:
            stack.push(token);
        }
    }

    return Integer.parseInt(stack.pop());
}

要点
不要被逆波兰表示法这个名词吓到,其实只栈的使用而已。
另外要注意/-两个运算符,操作数有先、后顺序的要求,搞反了就错了。



若非注明,均为原创,欢迎转载,转载请注明来源:LeetCode第150题 – 逆波兰表达式求值

关于 JackieAtHome

基层程序员,八年之后重新启航

此条目发表在 Java, LeetCode 分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Protected with IP Blacklist CloudIP Blacklist Cloud