题解 | #逆波兰表达式求值#

逆波兰表达式求值

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

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务