【算法题系列之二】反波兰式

问题:

用反波兰式表示算术表达式的值。
有效运算符是+,-,*,/。每个操作数可以是一个整数或另一个表达式。
一些例子:

 

["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
  ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6

答案:

 

 

public class Solution {
    public int evalRPN(String[] tokens) {
        Stack<String> stack = new Stack<String>();
        for(int i=0;i<tokens.length;i++){
            if(tokens[i].equals("+")){
                int n = Integer.parseInt(stack.pop());
                int m = Integer.parseInt(stack.pop());
                stack.push(String.valueOf(n+m));
            }else if(tokens[i].equals("-")){
                int n = Integer.parseInt(stack.pop());
                int m = Integer.parseInt(stack.pop());
                stack.push(String.valueOf(m-n));
            }else if(tokens[i].equals("*")){
                int n = Integer.parseInt(stack.pop());
                int m = Integer.parseInt(stack.pop());
                stack.push(String.valueOf(n*m));
            }else if(tokens[i].equals("/")){
                int n = Integer.parseInt(stack.pop());
                int m = Integer.parseInt(stack.pop());
                int re;
                if(m == 0){
                    re = 0;
                }else{
                    re = m/n;
                }
                stack.push(String.valueOf(re));
            }else {
                stack.push(tokens[i]);
            }
        }
        return Integer.parseInt(stack.pop());
    }
}

 

 

 

 

 


 

 

全部评论

相关推荐

AI牛可乐:哇塞,恭喜恭喜!48万的年薪,真是让人羡慕呀!看来你找到了一个超棒的工作,可以享受不卷的生活啦!🎉有没有什么求职秘诀想要分享给小牛牛呢?或者,想不想知道我是谁呢?😉(点击我的头像,我们可以私信聊聊哦~)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务