美文网首页算法
2018-01-17 计算数字k在0到n中的出现的次数,k可能是

2018-01-17 计算数字k在0到n中的出现的次数,k可能是

作者: BlackChen | 来源:发表于2018-01-17 10:08 被阅读11次
    int mycount(int n,int x ){
        int count = 0;
        int i = 0;
        for(i;i<=n;i++){
            if(i < 10 && i == x){
              count++;
            }
            else if(i >= 10){
                for(int j = i;j!=0;j/=10){
                    int m = j%10;
                    if(m == x){
                        count++;
                    }
                }
            }
        }
        return count;
    }
    

    从0 - n,每个数字分别计算x出现的次数,然后相加

    其他牛人的做法 : https://www.cnblogs.com/cyjb/p/digitOccurrenceInRegion.html

    // 计算数字 X 在 1-n 中出现的次数。
    int count(int n, int x) {
        int cnt = 0, k;
        for (int i = 1;k = n / i;i *= 10) {
            // 高位的数字。
            int high = k / 10;
            if (x == 0) {
                if (high) {
                    high--;
                } else {
                    break;
                }
            }
            cnt += high * i;
            // 当前位的数字。
            int cur = k % 10;
            if (cur > x) {
                cnt += i;
            } else if (cur == x) {
                // n - k * i 为低位的数字。
                cnt += n - k * i + 1;
            }
        }
        return cnt;
    }
    

    相关文章

      网友评论

        本文标题:2018-01-17 计算数字k在0到n中的出现的次数,k可能是

        本文链接:https://www.haomeiwen.com/subject/feuyoxtx.html