class Solution:
def findNthDigit(self, n: int) -> int:
"""
统计位数为m的数字的个数,并且乘以m,就等于数字字符串的位数。
"""
i = 1 # 整数的位数
cnt = 0
zeros = 0
# 寻找第n位数字可能存在于哪个整数区间
while n > cnt + 9 * pow(10, zeros) * i:
cnt += (9 * pow(10, zeros)) * i
# print(cnt)
i += 1
zeros += 1
# 存在于pow(10, zeros) 与 pow(10, zeors + 1) 之间, 数字位数是i位
a = (n - cnt) // i # 第 pow(10, zeros ) + a - 1 个数字
b = (n - cnt) % i # 第 pow(10, zeros) + a 个数字的第 b 位
if b == 0:
return int(str(pow(10, zeros) + a - 1 )[-1])
else:
return int(str(pow(10, zeros) + a)[b - 1])
02-07
781
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)