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);
}
}