Given an integer array queries
and a positive integer intLength
, return an array answer
where answer[i]
is either the queries[i]th
smallest positive palindrome of length intLength
or -1
if no such palindrome exists.
A palindrome is a number that reads the same backwards and forwards. Palindromes cannot have leading zeros.
Example 1:
Input: queries = [1,2,3,4,5,90], intLength = 3
Output: [101,111,121,131,141,999]
Explanation:
The first few palindromes of length 3 are:
101, 111, 121, 131, 141, 151, 161, 171, 181, 191, 202, ...
The 90th palindrome of length 3 is 999.
Example 2:
Input: queries = [2,4,6], intLength = 4
Output: [1111,1331,1551]
Explanation:
The first six palindromes of length 4 are:
1001, 1111, 1221, 1331, 1441, and 1551.
Constraints:
-
1 <= queries.length <= 5 * 104
-
1 <= queries[i] <= 109
-
1 <= intLength <= 15
SOLUTION:
class Solution:
def kthPalindrome(self, queries: List[int], intLength: int) -> List[int]:
ogLength = intLength
isOdd = intLength & 1
if isOdd:
intLength += 1
k = intLength // 2
k = 10 ** (k - 1)
op = []
for q in queries:
pal = str(k + q - 1)
if isOdd:
pal += pal[::-1][1:]
else:
pal += pal[::-1]
if len(pal) == ogLength:
op.append(int(pal))
else:
op.append(-1)
return op
Top comments (0)