2217. Find Palindrome With Fixed Length
Read the full problem statement on LeetCode.
Difficulty: medium Acceptance: 37% Topics: Array, Math
View full problem on LeetCode Reading material
Reference solution (spoiler · python)
# Time: O(n * l)
# Space: O(1)
# math
class Solution(object):
def kthPalindrome(self, queries, intLength):
"""
:type queries: List[int]
:type intLength: int
:rtype: List[int]
"""
def reverse(x):
result = 0
while x:
result = result*10+x%10
x //= 10
return result
def f(l, x):
x = 10**((l-1)//2)+(x-1)
if x > 10**((l+1)//2)-1:
return -1
return x*10**(l//2)+reverse(x//10 if l%2 else x)
return [f(intLength, x) for x in queries]
# Time: O(n * l)
# Space: O(l)
# math
class Solution2(object):
def kthPalindrome(self, queries, intLength):
"""
:type queries: List[int]
:type intLength: int
:rtype: List[int]
"""
def f(l, x):
if 10**((l-1)//2)+(x-1) > 10**((l+1)//2)-1:
return -1
s = str(10**((l-1)//2)+(x-1))
return int(s+s[::-1][l%2:])
return [f(intLength, x) for x in queries]
Solution from kamyu104/LeetCode-Solutions · MIT