150. 逆波兰表达式求值
根据逆波兰表示法(又叫做后缀表达式),求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
中等难度。逆波兰表示式可用栈进行计算,遇到数字就将数字压栈,遇到操作符,就将栈顶的两个元素取出计算,将计算结果再压入栈即可,实际上还是比较简单的。
public int evalRPN( String[] tokens ){
Stack stack = new Stack<>();
for( String s : tokens ){
switch( s ){
//注意是num2是第一个操作数,num1是第二个操作数
case "+":{
int num1 = stack.pop();
int num2 = stack.pop();
stack.push( num2 + num1 );
break;
}
case "-":{
int num1 = stack.pop();
int num2 = stack.pop();
stack.push( num2 - num1 );
break;
}
case "*":{
int num1 = stack.pop();
int num2 = stack.pop();
stack.push( num2 * num1 );
break;
}
case "/":{
int num1 = stack.pop();
int num2 = stack.pop();
stack.push( num2 / num1 );
break;
}
default:
stack.push( Integer.valueOf( s ) );
break;
}
}
return stack.pop();
}



