LintCode-Digit Counts

本文介绍了一个简单的算法,用于计算从1到n范围内数字k出现的次数。通过遍历每个数字并检查其每一位是否等于k来实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Digit Counts

Description

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

Have you met this question in a real interview? Yes

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)

  • 题目模板

    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) {
          // write your code here
      }
    }
  • 题目大意

    给你一个数n,让你算出从1到n中有多少个数包含数字k

  • 大概思路

    刚开始想了想找规律,后来发现题目给的n只有int,觉得暴力就可以了

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) {
        // write your code here
        int sum = 0, a;
        for(int i=0; i<=n; i++){
            int t = i;
            if(t == k){
                sum++;
                continue;
            }
            while(t >= 1){
                a = t % 10;
                if(a == k)
                    sum++;
                t /= 10;
            }
        }
        return sum;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值