问题描述
给定一个数字k
,计算 k
在 0 到 n
中出现的次数,k
可能是 0
到 9
的一个值。
样例
输入:
k = 1
n = 12
输出:
5
解释:
在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 中,1、10、11、12 中均出现了 1,其中 11 中出现了 2 次 1,故1出现 5 次。
解题思路
直接暴力解题,写一个循环,对循环中每个数进行拆分(1:运用算数拆数;2:转成字符串再拆成byte数组),判断下是不是等于k。
代码示例(JAVA)
public class Solution {
/**
* @param k: An integer
* @param n: An integer
* @return: An integer denote the count of digit k in 1..n
*/
public int digitCounts(int k, int n) {
// n比k小,直接结束
if (n < k) {
return 0;
}
// 循环第一个匹配上的必定是=k,直接从k+1开始
int result = 1;
for (int i = k + 1; i <= n; i++) {
for (int j = i; j > 0; j = j / 10) {
if (j % 10 == k) {
result++;
}
}
}
return result;
}
}
网友评论