3. Digit Counts

淩亂°似流年 2022-05-27 03:43 223阅读 0赞

3. Digit Counts

Description

  1. Count the number of k's between 0 and n. k can be 0 - 9.

Example

  1. if n = 12, k = 1 in
  2. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
  3. we have FIVE 1's (1, 10, 11, 12)

Solution

  1. import java.util.ArrayList;
  2. public class Solution {
  3. /* * @param : An integer * @param : An integer * @return: An integer denote the count of digit k in 1..n */
  4. public int digitCounts(int k, int n) {
  5. // write your code here
  6. if(n==0 && k==0) return 1;
  7. ArrayList<Integer> bits = new ArrayList<>();
  8. int nn = n;
  9. int sum = 0;
  10. while(nn>0){
  11. bits.add(nn%10);
  12. nn /= 10;
  13. }
  14. nn = 1;
  15. for(int i=0;i<bits.size();i++){
  16. nn *= 10;
  17. if(i>0 && i==bits.size()-1 && k==0){
  18. break;
  19. }
  20. if(k > bits.get(i)) sum = sum + n / nn * (nn / 10);
  21. else if(k==bits.get(i)) {
  22. if(i==0){
  23. sum = sum + n / nn * (nn / 10) + 1;
  24. }else{
  25. sum = sum + n / nn * (nn / 10) + 1 + n % (nn/10);
  26. }
  27. }else{
  28. sum = sum + (n / nn + 1) * (nn / 10);
  29. }
  30. }
  31. return sum;
  32. }
  33. };

发表评论

表情:
评论列表 (有 0 条评论,223人围观)

还没有评论,来说两句吧...

相关阅读

    相关 3 digit code

    原题如下图示 ![alt][] 密码锁是3位的密码,猜5种组合分别有下面的提示 `7 9 3` :只有1个对的,而且在正确位置; `7 2 5`:只有1个对的,但位置不

    相关 Digits

    \\(Digits\\) ![m6C1AO.png][] 这道题目比较简单,首先先打出来暴力,然后一看\\(b\\)的范围,瞬间想到快速幂。 快速幂的精髓是什么?