150. 逆波兰表达式求值
本题很容易想到用栈来解决,需要处理细节比较多,首先用Deque创建一个队列LinkedList作栈使用,其次需要想办法将数字放入,这里需要用一个n1和n2标记此时的出栈数字,然后对栈进行操作将原栈中数字修改成运算符操作后的结果。以上是我觉得做这题的难点,首先我不熟悉栈的创建(Deque stack = new LinkedList();),其次不知道如何让运算符不入栈(使用isNumber()方法,如果是运算符返回false),再次不知道遇到运算符如何改变原栈最后能得出结果(使用n1,n2标记stack.pop();然后将n1和n2作运算)。
class Solution {public int evalRPN(String[] tokens) {int n = tokens.length;Deque stack = new LinkedList();for (int i = 0; i //这里也可以使用if else判断switch(token) {case "+":stack.push(n1 + n2);break;case "-":stack.push(n1 - n2);break;case "*":stack.push(n1 * n2);break;case "/":stack.push(n1 / n2);break;
//default是如果上述都不符合,则运行此之后,一般放在最后default:}}}return stack.pop();}private boolean isNumber(String token) {return !("+".equals(token) || "-".equals(token) || "*".equals(token) || "/".equals(token));}
}