【题目描述】
Count the number of k's between 0 and n. k can be 0 - 9.
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在0到n中的出现的次数,k可能是0~9的一个值
样例
例如n=12,k=1,在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],我们发现1出现了5次 (1, 10, 11, 12)
【本题答案】
package blog;
/**
* @author yesr
* @create 2018-03-20 上午12:13
* @desc
**/
public class Test0319 {
public int digitCounts(int k, int n) {
int cnt = 0;
for (int i = k; i <= n; i++) {
//分次计算每一个数中含有k的个数
cnt += singleCount(i, k);
}
return cnt;
}
private int singleCount(int i, int k) {
//排除0的情况
if (i == 0 && k == 0)
return 1;
int cnt = 0;
while (i > 0) {
//判断末尾是否为k
if (i % 10 == k) {
cnt++;
}
//去掉末尾再次循环,直到去除完所有位跳出循环
i = i / 10;
}
return cnt;
}
}