美文网首页
3. 统计数字

3. 统计数字

作者: YOLO_2a2d | 来源:发表于2020-09-10 09:57 被阅读0次

    计算数字 k 在 0 到 n 中的出现的次数,k 可能是 0~9 的一个值。
    样例

    样例 1:

    输入:
    k = 1, n = 1
    输出:
    1
    解释:
    在 [0, 1] 中,我们发现 1 出现了 1 次 (1)。

    样例 2:

    输入:
    k = 1, n = 12
    输出:
    5
    解释:
    在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 中,我们发现 1 出现了 5 次 (1, 10, 11, 12)(注意11中有两个1)。

    class Solution {
    public:
        /**
         * @param k: An integer
         * @param n: An integer
         * @return: An integer denote the count of digit k in 1..n
         */
        int digitCounts(int k, int n) {
            // write your code here
            
            int count=0;
            int i=0;
            int value=-1;               //考虑0的情况
            int last_one=-1;            //考虑0的情况
            
            while(i<=n){
                
                if(value==-1){
                     value=i;
                }
                   
                if(value!=0){               //考虑非0 的情况
                    last_one=value%10;          //最后一位
                    value=value/10;             //抛弃最低位
                }
                
                if(last_one==k){
                    count++;
                }
                
                if(value==0){
                     if(k==i&&i==0)//处理特殊情况
                        count++;
                    value=-1;           //重置value值
                    i++;                //前进一步 
       
                }
                
               
            }
            
            return count;
            
        }
    };
    
    

    算法设计思想:

    • 不断的抛出最低的个位数且缩小当前数字的大小;
    • 直到当前数值缩小为0时,处理下个数值;

    相关文章

      网友评论

          本文标题:3. 统计数字

          本文链接:https://www.haomeiwen.com/subject/stiuektx.html