NowCoder

解题思路

  1. public int NumberOf1Between1AndN_Solution(int n) {
  2. int cnt = 0;
  3. for (int m = 1; m <= n; m *= 10) {
  4. int a = n / m, b = n % m;
  5. cnt += (a + 8) / 10 * m + (a % 10 == 1 ? b + 1 : 0);
  6. }
  7. return cnt;
  8. }

Leetcode : 233. Number of Digit One-C++JavaPython)