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的情况讨论~