题目 “Digit Counts”
Count the number of k’s between 0 and n. k can be 0 - 9.(计算出一组数中包含k的个数,同一个数里多次出现k要多次计数)
Example
if n = 12, k = 1 in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
we have FIVE 1’s (1, 10, 11, 12)
题目详解
思路:输入一个数据,依次对数据的每一位进行判断,看是否等于k
源代码:
// An highlighted block
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 j=0;
int bit_right;
int num_k=0;
if(k==0)
{
num_k++;
}
for(int i=0;i<=n;i++)
{
j=i;
while(j) //j=0时一个数中k的个数计算结束
{
bit_right=j%10; //取该数的个位数(对10求余)
j/=10; //对该数除以10并取整
if(bit_right==k)
{
num_k++;
// break;
}
}
}
return num_k;
}
};