题目描述

数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。

解题思路
采用for循环从1到n不断累加数字的长度length,当累加的长度大于n时,说明当前的数字即为需要寻找的数字:

    for i in range(n):
        length += len(str(i))
       		 if length >= n:

通过length-n即可求出第n位为当前数字的第几位:

str(i)[length - n]

完整代码

def print_num(n):
    length = 0
    for i in range(n):
        length += len(str(i))
        if length >= n:
            return str(i)[length - n]

print(print_num(3))

PS:说一些题外话,本题的解题思路借鉴了别人的,之所以一定要写在这儿,是因为博主本人对这个题一直耿耿于怀,我在面试字节跳动的时候,HR给我出了这个题,当时思考了很久一直没有解题思路,因此也就尝到了凉面。