题解 | #整数中1出现的次数(从1到n整数中1出现的次数)#

整数中1出现的次数(从1到n整数中1出现的次数)

http://www.nowcoder.com/practice/bd7f978302044eee894445e244c7eee6

	//eg:3140192  (注:看的别人题解的理解)
    //此题只需关注数中的每一位都是为1的情况,然后累加起来就行
    //记cur = 要算的某位位置 , cur左边记为a , cur右边记为b
    //位上的数分为0 1 大于1 三种情况
    //(1) cur = 0的情况,比如例子中千位的情况,
    //如果万位上为1,那么cur左边只能是 0~313 , 右边是0~592 a=314 b=192
    //那么此时 a*1000
    //(2) cur = 1的情况,比如例子中百位的情况
    //   又分为两种情况
    //   第一种情况:左边为 0~3139 ,右边是0~99
    //   第二种情况:右边为 3140 , 右边是0~92
    //   综上为: a*100+1*(b+1)
    //(3) cur>1 的情况,比如例子中十位的情况,
    // 如果十位是1 , 那么就为 0~31401 右边是0—9
    //   所以 (a+1)*10
    public int NumberOf1Between1AndN_Solution(int n) {
        int counts=0;
        for (int m = 1; m <=n; m=m*10) {
            int a=n/m, b=n%m;
            counts+=(a+8)/10*m+(a%10==1 ? b+1 :0); //a%10表示上一位是否为1,为0?后一位为几就加几:0
  
        }
        return counts;
    }
}
全部评论

相关推荐

07-05 16:23
门头沟学院 Java
mengnankk:我投了300,约了5 6个面试。感觉项目写的太多了。一个项目就写五六个亮点,不是把整个项目的功能描述下。其他的没啥,简历看起来有点长
点赞 评论 收藏
分享
陈逸轩1205:才105 哥们在养生呢
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 13:15
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务