3. 统计数字

2020-09-10  本文已影响0人  YOLO_2a2d

计算数字 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;
        
    }
};

算法设计思想:

上一篇 下一篇

猜你喜欢

热点阅读