DEV Community

Abhishek Chaudhary
Abhishek Chaudhary

Posted on

Find Palindrome With Fixed Length

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
Enter fullscreen mode Exit fullscreen mode

Top comments (0)