【栈】LCR 036. 逆波兰表达式求值

本文详细介绍了如何使用栈数据结构实现逆波兰表达式的求值,通过遍历输入数组,处理运算符和操作数,最终返回计算结果。Solution类中的evalRPN方法展示了具体实现过程。
摘要由CSDN通过智能技术生成

LCR 036. 逆波兰表达式求值

解题思路

  • 初始化栈:

  • 创建一个整数栈用于存储操作数。

  • 遍历表达式数组:

  • 对于数组中的每个元素:

    • 如果是运算符,从栈中弹出两个操作数,并根据运算符进行相应的运算,然后将结果压入栈中。
    • 如果是操作数,则直接将其压入栈中。
    • 执行运算:
  • 当遍历完整个表达式数组后,栈顶元素即为最终的计算结果。

  • 返回结果:

    • 返回栈顶元素作为最终的计算结果。
class Solution {
    public int evalRPN(String[] tokens) {
        Stack<Integer> s = new Stack<>();

        for(int i = 0; i < tokens.length; i++){
            // 遇到运算符 出栈两个操作数
            if("+".equals(tokens[i])){
                s.push(s.pop() + s.pop());// 操作数出栈
            }else if("-".equals(tokens[i])){
                int t1= s.pop();
                int t2 = s.pop();
                s.push(t2 - t1);
            }else if("*".equals(tokens[i])){
                s.push(s.pop() * s.pop());
            }else if("/".equals(tokens[i])){
                int t1 = s.pop();
                int t2 = s.pop();
                s.push(t2/ t1);
            }else {
                s.push(Integer.valueOf(tokens[i]));
            }
        }

        return s.pop();
    }
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少写代码少看论文多多睡觉

求打赏,求关注,求点赞

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值