Leetcode: 564. Find the Closest Palindrome

Problem Statement

class Solution:
    def nearestPalindromic(self, num: str) -> str:
        inum = int(num)
        if inum <= 10:
            return str(inum - 1)
        N = len(num)
        c = set([int("9" * (N - 1)), int("1" + ("0" * (N - 1)) + "1")])
        for e in 0, 1:
            for d in +1, 0, -1:
                p = str(int(num[:N // 2 + e]) + d)
                c.add(int(p[:-1] + p[::-1]))
                c.add(int(p + p[::-1]))
        ans = None
        for x in sorted(c):
            if x == inum:
                continue
            if ans is None or abs(ans - inum) > abs(x - inum):
                ans = x
        return str(ans)