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

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

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

借鉴了牛客 WosAlan的思路,感谢提供思路

图片说明
图片说明
图片说明

此外要注意base要从1开始,每次*10,不要超过n。

class Solution {
public:
    int NumberOf1Between1AndN_Solution(int n) {

        if(n==0){
            return 0;
        }
        //从个位数开始
        int base = 1;

        //出现0的个数
        int res = 0;

        while(base <= n){
            int cur = n/base%10;
            int a = n/base/10;
            int b = n%base;

            if(cur==0){
                res += a*base;
            }else if(cur==1){
                res += 1*(b+1);

                res += a*base;
            }else{
                res += (a+1)*base;
            }

            base *=10;
        }

        return res;

    }
};
剑指Offer 文章被收录于专栏

剑指offer的解析结合

全部评论

相关推荐

11-09 01:22
已编辑
东南大学 Java
高级特工穿山甲:羡慕,我秋招有家企业在茶馆组织线下面试,约我过去“喝茶详谈”😢结果我去了发现原来是人家喝茶我看着
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务