逢“四”过

题目描述

程序员小明打了一辆出租车去上班。出于职业敏感,他注意到这辆出租车的计费表有点问题,总是偏大。

出租车司机解释说他不喜欢数字4,所以改装了计费表,任何数字位置遇到数字4就直接跳过,其余功能都正常。

比如:

  • 23再多一块钱就变为25;

  • 39再多一块钱变为50;

  • 399再多一块钱变为500;

小明识破了司机的伎俩,准备利用自己的学识打败司机的阴谋。

给出计费表的表面读数,返回实际产生的费用。

public class work {
    public static void main(String[] args) {
        System.out.println(demo(5));
    }
    public static int demo(int num){
        //修改参数,可以动态确认逢几过
        final int NUM = 4;
        //记录总数值
        int sum = 0;
        //对于没位数进行截串
        String s = String.valueOf(num);
        //记录总位数
        int length = s.length();
        //惊醒循环
        for (int i = 0; i < s.toCharArray().length; i++) {
            //将每位数截串
            byte c = (byte) ((byte) s.charAt(i) - 48);
            //策略模式:对于不同位数情况进行分而治之
            if (c > NUM) {
                sum += Math.pow(9, length - i - 1) * (c - 1);
            } else if (c < NUM) {
                sum += Math.pow(9, length - i - 1) * c;
            } else {
                sum += Math.pow(9, length - i - 1) * 3;
                break;
            }
        }
       return sum;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值