150. Evaluate Reverse Polish Notation
一、题目
1、审题
2、分析
给出逆波兰表达式(即运算数写前面,操作符写后边),求出运算的正确结果。
二、解答
1、思路:
采用一个 Stack 存储操作数,当碰到运算符时,出栈栈顶的两个元素进行运算即可。最终遍历完数组后, Stack 中存在的唯一一个数即为结果。
public int evalRPN(String[] tokens) { int len = tokens.length; if(len == 0) return 0; Set<String> operSet = new HashSet<>(Arrays.asList("+", "-", "*", "/")); Stack<Integer> stack = new Stack<>(); int result = 0; for (int i = 0; i < len; i++) { if(operSet.contains(tokens[i])) { int num1 = stack.pop(); int num2 = stack.pop(); if(tokens[i].equals("+")) result = num2 + num1; else if(tokens[i].equals("-")) result = num2 - num1; else if(tokens[i].equals("*")) result = num2 * num1; else result = num2 / num1; stack.add(result); } else { stack.add(Integer.valueOf(tokens[i])); } } return stack.pop(); }