题解 | #逆波兰表达式求值#
逆波兰表达式求值
https://www.nowcoder.com/practice/885c1db3e39040cbae5cdf59fb0e9382
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param tokens string字符串一维数组
* @return int整型
*/
public int evalRPN (String[] tokens) {
// write code here
Stack s = new Stack();
int a,b;
for(int i = 0;i < tokens.length; i++){
//数字入栈
if(isNum(tokens[i])){
s.push(Integer.parseInt(tokens[i]));
}else{
//符号出栈,并出栈两个数字进行运算,结果入栈
b = (int)s.pop();
a = (int)s.pop();
switch(tokens[i]){
case "+": s.push(a + b); break;
case "-": s.push(a - b);break;
case "*":s.push((int)(a * b));break;
case "/":s.push((int)(a / b));break;
}
}
}
//遍历处理完表达式后,栈顶即为后续表达式求值结果
return (int)s.peek();
}
//判断当前遍历的字符串为数字还是操作符
public boolean isNum(String num){
//正数
if(num.charAt(0) >= '0' && num.charAt(0) <= '9'){
return true;
}
//负数
else if(num.charAt(0) == '-' && num.length() > 1){
return true;
}else{
//操作符
return false;
}
}
}
查看13道真题和解析