Question
Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …
Note: n is positive and will fit within the range of a 32-bit signed integer (n < 2^31).
Example 1:
Input:
3
Output:
3
Example 2:
Input:
11
Output:
0
Explanation:
The 11th digit of the sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... is a 0, which is part of the number 10.
Solution
class Solution:
def findNthDigit(self, n):
"""
:type n: int
:rtype: int
"""
if n <= 9:
return n
digits = 1
count = 9
while n > count * digits:
n -= count * digits
count *= 10
digits += 1
num = (n - 1) // digits
digit = (n - 1) % digits
res = 10 ** (digits - 1)
res += num
return int(str(res)[digit])