计算数字 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)。
思路:
找一个范围中存在当前数字的个数,必定是从当前k开始的,比如k=5,那么数字中存在5这个数字必定要大于5.
所以从k开始找到结尾,对每一个数字进行判断看看有几个K,然后都加起来
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 ret = 0;
for(int i = k; i <= n; i++ )
{
ret += nums(k, i);
}
return ret;
}
int nums(int k, int num)
{
if(num == 0 && k == 0)
return 1;
int ret = 0;
while(num)
{
if(num % 10 == k)
ret++;
num /= 10;
}
return ret;
}
};