数字以0123456789101112131415…的格式序列化到一个字符序列中,求任意第n位对应的数字。
Python:迭代+求整/求余
数字序列中某一位的数字(迭代 + 求整 / 求余,清晰图解)
class Solution:
def findNthDigit(self, n: int) -> int:
digit, start, cnt = 1, 1, 9
while n > cnt: # 1. 计算所属区间,如 1~9、10~99、100~999、... 等
n -= cnt
start *= 10
digit += 1
cnt = 9 * start * digit
num = start + (n - 1) // digit # 2. 计算属于区间中的哪个数字
idx = (n - 1) % digit # 3. 计算在该数字的第几位
return int(str(num)[idx]) # 4. 返回结果