代码随想录-算法训练-day11

day11

Lc150. 逆波兰表达式求值

逆波兰表达式其实就是后缀表达式 是指运算符写在后面。 使用栈来求解

遇到数字就放入栈内 遇到操作符就**取出栈顶两个数字进行计算,并将结果压入栈中**

注意:

在本题要注意: 减法和除法 是对前后两个顺序有要求 后弹出的减去 或者除以先弹出的. 因为在栈中,后进先出会导致先压入的元素在减法时应该作为减数,后压入的元素应作为被减数。 所以 减法的写法是 -d.pop() + d.pop() 如果不想这样写 就换成除法一样 两个int

public int evalRPN(String[] tokens) {
    Deque<Integer> d = new LinkedList<>();
    for(String s : tokens){
        if("+".equals(s)) d.push(d.pop() + d.pop());
            
        else if("-".equals(s)) d.push(-d.pop() + d.pop());
            
        else if("*".equals(s)) d.push(d.pop() * d.pop());
        else if("/".equals(s)) {
            int n1 = d.pop();
            int n2 = d.pop();
            d.push(n2 / n1);
        }else d.push(Integer.valueOf(s));

    }
    return d.pop();


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值