博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer 43 1~n整数中1出现的次数
阅读量:4073 次
发布时间:2019-05-25

本文共 748 字,大约阅读时间需要 2 分钟。

1~n整数中1出现的次数

题目

输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。

例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。

示例

输入:n = 12输出:5

题解

计算总共出现1的次数,我们可以将其分解为先定义一个当前位cur,然后计算当前位为1的时候总共可能出现的次数,会出现3中情况,分别是当前为大于1、等于1、小于1的时候如下图所示。逐个计算每一位然后相加得到最终的结果。

在这里插入图片描述

代码(Java)

class Solution {    public int countDigitOne(int n) {        long base=1;        int ans=0;        long a,b,cur;        while(base<=n){           a=(n/base)/10;           b=n%base;           cur=(n/base)%10;           if(cur>1){               ans+=(a+1)*base;           }else if(cur==1){               ans+=(a*base+b+1);           }else{               ans+=a*base;           }           base=base*10;        }        return ans;    }}
  • 注意:此处的base、a、b、cur用了long类型,不然会出现个别大的数溢出而不能全部通过样例。但是python中就不用考虑,python会自动转换为长整型。

转载地址:http://etgji.baihongyu.com/

你可能感兴趣的文章
从mysql中 导出/导入表及数据
查看>>
HQL语句大全(转)
查看>>
几个常用的Javascript字符串处理函数 spilt(),join(),substring()和indexof()
查看>>
javascript传参字符串 与引号的嵌套调用
查看>>
swiper插件的的使用
查看>>
layui插件的使用
查看>>
JS牛客网编译环境的使用
查看>>
9、VUE面经
查看>>
Golang 数据可视化利器 go-echarts ,实际使用
查看>>
mysql 跨机器查询,使用dblink
查看>>
mysql5.6.34 升级到mysql5.7.32
查看>>
dba 常用查询
查看>>
Oracle 异机恢复
查看>>
Oracle 12C DG 搭建(RAC-RAC/RAC-单机)
查看>>
Truncate 表之恢复
查看>>
Oracle DG failover 后恢复
查看>>
mysql 主从同步配置
查看>>
为什么很多程序员都选择跳槽?
查看>>
mongdb介绍
查看>>
Yotta企业云盘更好的为媒体广告业服务
查看>>