以下是我看了他人的解答:
描述
计算数字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&¤t>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;
}
网友评论