400. 第 N 位数字

exiaohu 于 2021-11-30 发布

题目链接:400. 第 N 位数字

设 $N$ 位 数字,属于 $n_d$ 位数。那么它就是第 $ n = N-\sum_{i=1}^{n_d - 1}{count(i)}$ 个 $n_d$ 位数,其中 $count(i)$ 是 $i$ 位数的个数,$n$ 从 $0$ 开始计数。

\[count(i) = 9 \times 10^{i-1}\]

那么,第 $N$ 位数字,即 $\lfloor (n-1) / n_d\rfloor + 10^{n_d - 1}$ 的第 $(n-1)\% n_d$位。

class Solution:
    def findNthDigit(self, n: int) -> int:
        the_count_of_n_digit_number = lambda nd: 9 * (10 ** (nd - 1))

        nd = 1
        while (n - nd * the_count_of_n_digit_number(nd)) > 0:
            n -= nd * the_count_of_n_digit_number(nd)
            nd += 1

        return int(str((n - 1) // nd + 10 ** (nd - 1))[(n - 1) % nd])