150、逆波兰表达式求值
代码:
class Solution { public int evalRPN(String[] tokens) { Deque<Integer> stack = new LinkedList(); for (String token : tokens) { char c = token.charAt(0); if (!isOpe(token)) {//不是运算符 stack.addFirst(stoi(token)); } else if (c == '+'){ stack.push(stack.pop() + stack.pop()); } else if (c == '*'){ stack.push(stack.pop() * stack.pop()); } else if (c == '-'){ stack.push(-stack.pop() + stack.pop()); } else { int num1 = stack.pop(); int num2 = stack.pop(); stack.push(num2/num1); } } return stack.pop(); } private boolean isOpe(String s){//判断是否是运算符 return s.length() == 1 && s.charAt(0) < '0' || s.charAt(0) > '9'; } private int stoi(String s){ return Integer.valueOf(s); } }