K-th Smallest in Lexicographical Order LeetCode solution in Python

1
class Solution:
2
def findKthNumber(self, n: int, k: int) -> int:
3

4
def prefix(op, n):
5
if op == n:
6
return 1
7
if int(op) > int(n):
8
return 0
9
for i in range(len(op)):
10
if int(op[i]) > int(n[i]):
11
rem = len(n) - 1 - len(op)
12
if not rem:
13
return 1
14
return 1 + int(10 * ((1 - 10**rem) / -9))
15
elif int(op[i]) < int(n[i]):
16
rem = len(n) - len(op)
17
if not rem:
18
return 1
19
return 1 + int(10 * ((1 - 10**rem) / -9))
20

21
res = 1
22
for i in range(10):
23
res += prefix(op + str(i), n)
24
return res
25

26
ans = 1
27
while k > 1:
28
pref = prefix(str(ans), str(n))
29
if pref >= k:
30
ans *= 10
31
k -= 1
32
else:
33
ans += 1
34
k -= pref
35

36
return ans

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0