您的位置:首页 > 编程语言 > Java开发

计算数字k在0到n中的出现的次数,k可能是0~9的一个值

2018-03-21 12:30 501 查看
样例 例如n=12,k=1,在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],我们发现1出现了5次 (1, 10, 11, 12)
本人使用的是java语言,亲测可行。学习时间较短,不足之处欢迎讨论。
public class Solution {
/*
* @param : An integer
* @param : An integer
* @return: An integer denote the count of digit k in 1..n
*/
public int digitCounts(int k, int n) {
// write your code here
int i=1;
int w=0;
int sum=0;
while((n/i)!=0){
i=i*10;
w++;
}
if(w==0&&k==0){
sum++;
return sum;
}
int[] A=new int[w];
int c=10;
int d;
for(int j=0;j<w;j++){
d=c/10;
A[j]=((n%c)-(n%d))/d;
if(A[j]<k){
sum=sum+(n/c)*d;
}else if(A[j]==k){
sum=sum+(n/c)*d+(n%d)+1;
}else if(k==0&&j==(w-1)){
sum=sum;
}else{
sum=sum+((n/c)+1)*d;
}
c=c*10;
}
return sum;
}
};

以下为草稿,留作以后修改的参考。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java
相关文章推荐