lintcode3

作者: 小时候浪死了 | 来源:发表于2018-10-19 08:38 被阅读0次

    以下是我看了他人的解答:
    描述

    计算数字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)

    解:
    特别需要注意的是当k=0时的特殊情况,如果before==0&&k==0时,则出现次数为0,即不加任何数。
    其他情况则看current的before和after的大小来计算。

        int digitCounts(int k, int n) {
            // write your code here
            int current,before,after;
            int i=1,n_count=0;
            while(n/i!=0)
            {
                current=(n/i)%10;
                before=n/(i*10);
                after=n-n/i*i;
                if(k==0&&current>k)
                {
                    if(before!=0)
                    n_count+=before+1;
                   
                }
                else if(current>k)
                    n_count+=(before+1)*i;
                else if(current<k)
                    n_count+=before*i;
                else
                    n_count+=before*i+after+1;
                i=i*10;
            }
            return n_count;
        }
    

    相关文章

      网友评论

          本文标题:lintcode3

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