题目链接:https://leetcode-cn.com/problems/1nzheng-shu-zhong-1chu-xian-de-ci-shu-lcof/
难度:困难

描述:
输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。

例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。

题解

  1. class Solution:
  2. def countDigitOne(self, n: int) -> int:
  3. k, mulk = 0, 1
  4. ans = 0
  5. while n >= mulk:
  6. ans += (n // (mulk * 10)) * mulk + min(max(n % (mulk * 10) - mulk + 1, 0), mulk)
  7. k += 1
  8. mulk *= 10
  9. return ans