题解 | #牛的表达式计算器# 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> stack = new Stack<>(); // 创建一个整型栈对象 // 遍历后缀表达式中的每个元素 for (String token : tokens) { if (!token.equals("+") && !token.equals("-") && !token.equals("*") && !token.equals("/")) { // 如果当前元素不是运算符,将其转化为整型并压入栈中 stack.push(Integer.parseInt(token)); } else { int b = stack.pop(); // 弹出栈顶元素作为运算符的右操作数 int a = stack.pop(); // 弹出栈顶元素作为运算符的左操作数 int res; // 根据运算符进行相应的运算 if (token.equals("+")) { res = a + b; } else if (token.equals("-")) { res = a - b; } else if (token.equals("*")) { res = a * b; } else { res = a / b; } // 将运算结果压入栈中 stack.push(res); } } // 返回栈中最后剩下的元素,即计算后的结果 return stack.pop(); } }
这段代码使用的编程语言是 Java。
此代码考察了以下知识点:
- 数据结构:使用了栈(Stack)来实现后缀表达式的计算。栈是一种具有后进先出(LIFO)特性的数据结构,用于存储和管理元素。
- 字符串处理:通过遍历字符串数组,对每个元素进行判断和操作,实现后缀表达式的计算。
- 条件语句:使用了条件语句(if-else)来确定当前元素是操作数还是运算符,并根据不同的运算符执行相应的操作。
代码的文字解释大纲:
- 导入必要的类:导入java.util.Stack类,以便使用栈数据结构。
- 定义类和方法:定义一个名为Solution的类,其中包含一个名为calculatePostfix的方法,用来计算后缀表达式的结果。
- 创建栈对象:在calculatePostfix方法中,创建一个整型栈对象stack,用于存储操作数和中间计算结果。
- 遍历后缀表达式:使用for-each循环遍历后缀表达式数组tokens中的每个元素。
- 判断操作数和运算符:对于每个元素,通过条件语句判断是否为操作数,如果是则将其转换为整型并将其压入栈stack中;如果是运算符,则从栈中弹出两个操作数,并执行相应的运算。
- 运算结果入栈:根据运算符执行对应的运算,并将运算结果压入栈stack中。
- 返回计算结果:在遍历结束后,栈中只剩下一个元素,即为最终的计算结果,将其弹出并返回。