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

牛的表达式计算器

https://www.nowcoder.com/practice/261e7f01438f414c92f59c0059d3a906

import java.util.*;


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

编程语言是Java。

该题考察的知识点包括:

  • 使用堆栈数据结构进行后缀表达式的计算
  • 字符串的拆分和判断
  • 字符串转换为整数

代码的文字解释如下:

  1. 对于tokens中的每个字符串p,执行以下操作:如果p不是"+", "-", "*", "/"之一,将其转换为整数并压入堆栈stk。如果p是"+",从堆栈stk中弹出两个元素,将它们相加的结果压入堆栈stk。如果p是"*",从堆栈stk中弹出两个元素,将它们相乘的结果压入堆栈stk。如果p是"/",从堆栈stk中弹出两个元素,将第二个元素除以第一个元素的结果压入堆栈stk。如果p是"-",从堆栈stk中弹出两个元素,将第二个元素减去第一个元素的结果压入堆栈stk。
  2. 完成循环后,堆栈stk中剩余的唯一元素就是计算结果,将其返回。
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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