计算数字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)
class Solution {
public:
/**
* @param k: An integer
* @param n: An integer
* @return: An integer denote the count of digit k in 1..n
*/
int digitCounts(int k, int n)
{
int tmp,next,current,rest,i=0;
current=n;tmp=0;
if((k==0)&&(n<10))return 1;
while(1)
{
next=current/10;rest=current%10;
if((k||next)==0)break;
if(k<rest)
{
tmp+=(next+1)*pow(10,i);
}
else if(k>rest)
{
tmp+=next*pow(10,i);
}
else
{
tmp+=((next-current)*pow(10,i)+n+1);
}
if(next==0)break;
current/=10;
i++;
}
return tmp;
}
};