【lintcode】3.统计数字(c/c++/python解法)

题目

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

输入:
k = 1, n = 1
输出:
1
解释:
在 [0, 1] 中,我们发现 1 出现了 1(1)
输入:
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)

代码实现

c/c++语言解法

class Solution {
public:
    // param k : description of k
    // param n : description of n
    // return ans a integer
    int digitCounts(int k, int n) {
        int count = 0;
        if (k == 0) {
            count = 1;
        }
        for (int i = 1; i <= n; i++)
         {
            int number = i;
            while (number > 0)
             {
                if (number % 10 == k)
                 {
                    count += 1;
                 } 
                number /= 10;
              }
          }
        return count;
    }

python解法

class Solution:
    # @param k & n  two integer
    # @return ans a integer
    def digitCounts(self, k, n):
        assert(n >= 0 and 0 <= k <= 9)
        count = 0
        for i in range(n + 1):
            j = i
            while True:
                if j % 10 == k:
                    count += 1
                j /= 10
                if j == 0:
                    break
        return count

两种解法思想一样,通过循环向10取余来进行比对。不断取各个位数字

发布了14 篇原创文章 · 获赞 26 · 访问量 4286

猜你喜欢

转载自blog.csdn.net/m0_46976252/article/details/105555505