中等题3-统计数字

题目链接:
https://www.lintcode.com/problem/digit-counts/description
描述
计算数字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 中等题1;

import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) {
        int k = 1;
        int n = 12;
        System.out.println(digitCounts(1,12));
    }
    
    public static int digitCounts(int k, int n) {
        int num = 0;
        for (int i = k; i <= n; i++){
             //整数变成字符串
            String s = String.valueOf(i);
             //字符串变成字符数组
            char[] ss = s.toCharArray();
            for (int j = 0; j < s.length(); j++){
                //字符变成整数
                int a = Character.getNumericValue(ss[j]);
                if (a == k){
                num++;
                }
            }
        }
        return num;
    }
    
}

代码实现2:数学方法获得)通过与10的余数得到末位,通过与10除去掉末位,构成一个循环,就可以分析一个数的所有位。然后把所有位都加起来(从局部到整体)

 public int digitCounts(int k, int n) {
        int cnt = 0;
        for (int i = k; i <= n; i++) {
            //分次计算每一个数中含有k的个数
            cnt += singleCount(i, k);
        }
        return cnt;
    }
    public 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;
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 【1】7,9,-1,5,( ) A、4;B、2;C、-1;D、-3 分析:选D,7+9=16;9+(-1)=8;(...
    Alex_bingo阅读 19,655评论 1 19
  • “ 酷暑读书会,盛夏武修身”回眸 2017.8.9 由南岸区文化委,南岸区图书馆主办,重庆资武太极道院...
    有一套阅读 1,805评论 0 1
  • 我希望变成一个体面的girl,工作到凌晨四点也能去洗澡,喝酒到天亮也知道卸妆那种。 下辈子吧! ​
    卧底小龙虾阅读 1,288评论 0 0
  • 昨晚放学,还没见到人,就听见小郭在电话里要求让给他买个鸡排庆祝一下今天数学测验得了99分。我说:我考虑一下,等见面...
    你今天怎么样阅读 2,299评论 0 0
  • 吽嗒睐 度嗒睐 度睐嗦哈 吽嗒睐 度嗒睐 度睐嗦哈 湛蓝夜空中的朗星 在放歌 唱响空灵的梵音 拨动颤颤的琴弦 摇曳...
    塵光阅读 3,602评论 0 1

友情链接更多精彩内容