统计数字,解法

题目:计算数字k在0到n中的出现的次数,k可能是0~9的一个值

 

思路:

看到这个题目的时候其实就想到了,要判断从0~n 里没个数的每一位都是否和k相等。

具体做法就是循环到每个数然后一直对10取余,取到每一位的数字然后计数。

 

但是第一次提交还是做错了,代码如下:

 1 class Solution {
 2 public:
 3     /*
 4      * @param : An integer
 5      * @param : An integer
 6      * @return: An integer denote the count of digit k in 1..n
 7      */
 8     int digitCounts(int k, int n) {
 9         int total = 0;
10         for(int i =0;i<=n;i++)
11         {
12             int temp = i;
13             while(temp>0)
14             {
15                 if(temp==k)
16                 {
17                     total++;
18                 }
19                 temp=temp/10;
20             }
21         }
22         return total;
23     }
24 };

 

原因是忘了考虑k为0的情况,导致while循环可能会进不去。修改为do-while后测试通过:

 

class Solution {
public:
    /*
     * @param : An integer
     * @param : An integer
     * @return: An integer denote the count of digit k in 1..n
     */
    int digitCounts(int k, int n) {
        int total = 0;
        for(int i =0;i<=n;i++)
        {
            int temp = i;
            
            do{
                if(temp==k)
                {
                    total++;
                }
                temp=temp/10;
            }while(temp>0);
        }
        return total;
        // write your code here
    }
};

 

posted @ 2018-01-26 23:30  鼎雲  阅读(200)  评论(0编辑  收藏  举报