题目描述
数字以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给我出了这个题,当时思考了很久一直没有解题思路,因此也就尝到了凉面。