剑指offer---整数中1出现的次数

class Solution {
public:
    int NumberOf1Between1AndN_Solution(int n)
    {
        int count=0;
        for (int i=1;i<=n;i*=10)
        {int a=n/i; //高位
        int b=n%i;  //低位
        if (a%10>1) //对高位最低一位进行分类
        {
            count+=(a/10+1)*i;
        }
        if (a%10==1)
        {
            count+=(a/10)*i+b+1;
        }
        if (a%10==0)
        {
            count+=(a/10)*i;
        }        
        }
        return count;
    }
};

 

posted @ 2017-08-03 22:14  双马尾是老公的方向盘  阅读(83)  评论(0编辑  收藏  举报