count digit one

来源:互联网 发布:k线图基础知识 知乎 编辑:程序博客网 时间:2024/05/14 16:51
class Solution {
public:
    int countDigitOne(int n) {
        if(n<=0) return 0;
        if(n<10) return 1;
        long factor=1;
        while(factor*10<=n)
        factor*=10;
        int top=n/factor;
       // cout<<top<<endl;
        if(top==1) return countDigitOne(factor-1)(前面的)+countDigitOne(n%factor)(剩下的)+n%factor(最前面一位是1,因此余数的每一个都含有一个1)+1;
        else return top*countDigitOne(factor-1)(分开求每一部分的)+countDigitOne(n%factor)+factor(加上第一位是1的);
    }
};
0 0
原创粉丝点击