参考思路:牛客网网友:https://www.nowcoder.com/profile/7046624
public class Solution { public int NumberOf1Between1AndN_Solution(int n) { int count = 0; int i = 1; int high = 0,low = 0, curr = 0; while( (n/i) != 0 ){ high = n/(10*i);//高位数字 low = n-(n/i)*i;//低位数字 curr = (n/i)%10;//当前位数字 if(curr == 0){ count += i*high; } else if(curr == 1){ count += i*high + low + 1; } else{ count += (high+1)*i; } i *= 10; } return count; } }