题解 | #逆波兰表达式求值#
逆波兰表达式求值
https://www.nowcoder.com/practice/885c1db3e39040cbae5cdf59fb0e9382
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param tokens string字符串一维数组 * @return int整型 */ public int evalRPN (String[] tokens) { // write code here LinkedList<Integer> stack = new LinkedList<>(); for(int i = 0; i < tokens.length; i++) { if(isOprater(tokens[i])){ int num2 = stack.pop(); int num1 = stack.pop(); int result = op(num1, tokens[i].charAt(0), num2); stack.push(result); }else{ stack.push(Integer.parseInt(tokens[i])); } } return stack.pop(); } private boolean isOprater(String s){ return "+".equals(s) || "-".equals(s) || "*".equals(s) || "/".equals(s); } private int op(int num1, char oprater, int num2) { switch (oprater) { case '+': return num1 + num2; case '-': return num1 - num2; case '*': return num1 * num2; case '/': return num1 / num2; default: return 0; } } }