Given an integer n
, return the nth
digit of the infinite integer sequence [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...]
.
Example 1:
Input: n = 3
Output: 3
Example 2:
Input: n = 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.
Constraints:
1
2
3
4
5
6
7
8
9
10
11
|
def findNthDigit(n: int) -> int:
length = 1 # number of digits: 1, 2, 3 ...
range_count = 9 # count of numbers for current length: 9, 90, 900 ...
num = 1 # current number: 1, 10, 100, 1000 ...
while n > length * range_count:
n -= length * range_count
length += 1
range_count *= 10
num *= 10
num += (n-1) / length
return int(str(num)[(n-1) % length])
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
func findNthDigit(n int) int {
length := 1
rangeCount := 9
num := 1
for n > length*rangeCount {
n -= length * rangeCount
length += 1
rangeCount *= 10
num *= 10
}
num += (n - 1) / length
return int(strconv.Itoa(num)[(n-1)%length] - '0')
}
|