输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。
例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。
示例 1:
输入:n = 12
输出:5
示例 2:
输入:n = 13
输出:6
限制:
- 1 <= n < 2^31
分析:
方法:数位模拟
这道题要求我们统计 1 的个数,我们可以按每个位来考虑,比如 777:
- 百位数为 7,那么百位的 1 就是 1 一个,100 到 199 一百个数,一共 100 个
- 十位数为 7,那么十位的 1 就是 01,11,21,31,41,51,61,71 八个,个位十个数,一共 80 个
- 个位数为 7,那么个位的 1 就是 001,011,021,..., 771