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

逆波兰表达式求值

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

全部评论

相关推荐

06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-20 18:18
是不是意味着秋招就完蛋了
花不开柳成荫:如果你是Java,是的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务