题解 | #逆波兰表达式求值#
逆波兰表达式求值
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; } } }