public int NumberOf1Between1AndN_Solution(int n) {
int count=0;
int level=10;//模10处理个位数 模100处理十位数 以此类推
while(10*n/level!=0){
int temp = (n%level)/(level/10);//当前要处理的位的值
if(temp>1) count+=(n/level+1)*level/10;
if(temp==1) count+=(n%level-level/10+1)+(n/level)*level/10;
if(temp==0) count+=(n/level)*level/10;
level=10*level;
}
return count;
}
逐位找出1出现的次数,只是需要分当前位是0、1、大于1的情况讨论~
京公网安备 11010502036488号