依次得出个位十位… 上1的个数,进行相加即可。
public class Solution {
public int NumberOf1Between1AndN_Solution(int n) {
int sum=0;
for(int m=1;m<=n;m=m*10){
int x=n/(m*10);
sum+=x*m;
int y=n%(m*10);
y=y/m;//
if(y>1){//y>1 //y>m 1001
sum+=m;
}
if(y==1){//y==1 //y--m
sum+=(n%m+1);
}
}
return sum;
}
}