题解 | #牛的表达式计算器#

牛的表达式计算器

https://www.nowcoder.com/practice/261e7f01438f414c92f59c0059d3a906?tpId=354&tqId=10590515&ru=/exam/oj&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Foj

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param tokens string字符串一维数组 
     * @return int整型
     */
    public int calculatePostfix (String[] tokens) {
        Deque<Integer> stack = new ArrayDeque<>();
        for (String token : tokens) {
            Integer result = 0;
            if (token.equals("+")) {
                result = stack.pop() + stack.pop();
            } else if (token.equals("-")) {
                int digit = stack.pop();
                result = stack.pop() - digit;
            } else if (token.equals("*")) {
                result = stack.pop() * stack.pop();
            } else if (token.equals("/")) {
                int digit = stack.pop();
                result = stack.pop() / digit;
            } else {
                result = Integer.parseInt(token);
            }
            stack.push(result);
        }
        return stack.peek();
    }
}

本题知识点分析:

1.栈的特点:先进后出

2.掌握出栈和入栈

3.掌握字符串转数字

本题解题思路:

1.创建一个双向队列ArrayDeque,当然你用stack也是一样的,双向队列在用作栈时,性能优于Stack,用于队列,优于LinkedList,

当然如果有线程安全情况,用JUC下面的类即可

2.遍历tokens字符串数组

3.当遇到运算符号+、-、*、/、进行出栈,要注意减号和除号的出栈顺序,因为减号和除号不能前后顺序相反会导致结果不同,加号和乘号则没有这个问题

4.如果遇到其他,也就是数字字符串,例如:"3",那么就转化以后进行入栈

5.最后返回栈顶元素即可

本题使用编程语言:Java

高频面试算法题解 文章被收录于专栏

高频面试算法题解,每天一小步,人生一大步,跟着一起刷起来!

全部评论

相关推荐

04-28 11:34
西北大学 运营
牛客4396号:不好意思,这个照片猛一看像丁真
点赞 评论 收藏
分享
05-30 18:54
武汉商学院 Java
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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