import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param tokens string字符串一维数组 * @return int整型 */ public int calculatePostfix (String[] tokens) { // write code here Stack<String> stack = new Stack<>(); for (int i = 0; i < tokens.length; i++) { if (tokens[i].equals("+")) { int value1 = Integer.parseInt(stack.pop()); int value2 = Integer.parseInt(stack.pop()); int result = value2 + value1; stack.add(String.valueOf(result)); } else if (tokens[i].equals("-")) { int value1 = Integer.parseInt(stack.pop()); int value2 = Integer.parseInt(stack.pop()); int result = value2 - value1; stack.add(String.valueOf(result)); } else if (tokens[i].equals("*")) { int value1 = Integer.parseInt(stack.pop()); int value2 = Integer.parseInt(stack.pop()); int result = value2 * value1; stack.add(String.valueOf(result)); } else if (tokens[i].equals("/")) { int value1 = Integer.parseInt(stack.pop()); int value2 = Integer.parseInt(stack.pop()); int result = value2 / value1; stack.add(String.valueOf(result)); } else { stack.add(tokens[i]); } } return Integer.parseInt(stack.peek()); } }
本题考察的是栈的应用,所用编程语言是java。遍历数组中的每个字符串
对于每个运算符,我们需要依次弹出两个栈顶元素,进行运算,运算结果压入栈中
对于每个数字,我们直接压入栈中
最后栈顶元素就是运算结果