逆波兰表达式/中缀表达式

逆波兰表达式/中缀表达式

1.先定义一个方法分割字符串每个数据,然后存到集合里面
2.然后在新的方法中定义 一个栈来存储数据
具体实现如下:

//字符串转换为list集合
    public static List<String> getString(String str)
    {
        //方便为了测试,用空格隔开
        String [] res=str.split(" ");
        //创建集合存储
        List<String> list=new ArrayList<String>();

        for (String red:res) {
            list.add(red);
            
        }

        return list;
    }
    
    //计算逆波兰表达式
    public static int ca(List<String> list)
    {
        //定义一个集合存储数据
        Stack<String> stack=new Stack<>();
        //遍历集合
        for (String item:list)
        {
            //判断是否为数字,是放进去
            if (item.matches("\\d+")){
                stack.push(item);
            //否则丛stack弹出两个数据进行运算
            }else
            {
                //第二个数据
                int num2=Integer.parseInt(stack.pop());
                //第一个数
                int num1=Integer.parseInt(stack.pop());
                int res=0;
                switch (item){
                    case "+":
                        res=num1+num2;
                        break;
                    case "-":res=num1-num2;
                    break;
                    case "*":res=num1*num2;
                    break;
                    case "/": res=num1/num2;
                    break;
                    default:throw new RuntimeException("符号有误");
                }
                //最后的后果
                stack.push(res+"");
            }
        }
        return Integer.parseInt(stack.pop());
    }

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值