剑指 Offer 44. 数字序列中某一位的数字 | 算法

93 阅读1分钟

剑指 Offer 44. 数字序列中某一位的数字

数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,
第13位是1,第19位是4,等等。

请写一个函数,求任意第n位对应的数字。

示例 1:

输入:n = 3
输出:3
示例 2:

输入:n = 11
输出:0

限制: 0 <= n < 2^31
注意:本题与主站 400 题相同:https://leetcode-cn.com/problems/nth-digit/

解题思路:

www.bilibili.com/video/BV1CK…

Python代码

class Solution:
    def findNthDigit(self, n: int) -> int:
        start = 1
        digits = 1
        while n > 9*start*digits:
            n -= 9*start*digits
            start *= 10
            digits += 1
        num = start + (n - 1) // digits
        index = (n - 1) % digits
        return int(str(num)[index])