能够用两重循环找到答案,是我目前的水平,很多题目想着想着就弄出O(n^2)的解法,而面试公司的测试,这种解法通常不会接受的,怎么办?现阶段就先不求最优解,先暴力解?苦恼……
Description
计算数字 k 在 0 到 n 中的出现的次数,k 可能是 0~9 的一个值。https://www.lintcode.com/problem/digit-counts/description
Example
样例 1:
样例 2:
我的解法
Description
计算数字 k 在 0 到 n 中的出现的次数,k 可能是 0~9 的一个值。https://www.lintcode.com/problem/digit-counts/description
Example
样例 1:
代码:
输入:
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)。
我的解法
Java:
public int digitCounts(int k, int n) {
// write your code here
int[] nums = new int[n + 1];
char valueK = String.valueOf(k).charAt(0);
int cnt = 0;
for(int i = 0; i< n + 1; i ++) {
nums[i] = i;
char[] chars = String.valueOf(nums[i]).toCharArray();
for(int j = 0; j < chars.length; j ++) {
if(valueK == chars[j]) {
cnt ++;
}
}
}
return cnt;
}