Write a python program to find the closest palindrome from a given string

Last update on August 19 2022 21:50:46 (UTC/GMT +8 hours)

Python Programming Puzzles: Exercise-93 with Solution

Write a Python program to find the closest palindrome from a given string.

Input:  
cat
Output:
cac

Input:  
madan
Output:
madam
Input: 
radivider
Output:
radividar

Input: 
madan
Output:
madam
Input: 
abc
Output:
aba

Input: 
racecbr
Output:
racecar

Sample Solution:

Python Code:

#License: https://bit.ly/3oLErEI

def test(s):
    odd = 0
    for i, c in enumerate(s):
        if c != s[~i]:
            odd += 1
    if odd % 2 == 1:
        half = odd // 2
        pal = "".join((s[i] if i < half else s[~i] for i in range(len(s))))
        return pal
    else:
        half = odd // 2
        pal = "".join((s[i] if i <= half else s[~i] for i in range(len(s))))
        return pal

s = "cat"
print("Original string:",s) 
print("Closest palindrome of the said string:")
print(test(s))
s = "madan"
print("\nOriginal string:",s) 
print("Closest palindrome of the said string:")
print(test(s))
s = "radivider"
print("Original string:",s) 
print("Closest palindrome of the said string:")
print(test(s))
s = "madan"
print("\nOriginal string:",s) 
print("Closest palindrome of the said string:")
print(test(s)) 
s = "abc"
print("Original string:",s) 
print("Closest palindrome of the said string:")
print(test(s))
s = "racecbr"
print("\nOriginal string:",s) 
print("Closest palindrome of the said string:")
print(test(s))  

Sample Output:

Original string: cat
Closest palindrome of the said string:
cac

Original string: madan
Closest palindrome of the said string:
madam
Original string: radivider
Closest palindrome of the said string:
radividar

Original string: madan
Closest palindrome of the said string:
madam
Original string: abc
Closest palindrome of the said string:
aba

Original string: racecbr
Closest palindrome of the said string:
racecar

Flowchart:

Write a python program to find the closest palindrome from a given string

Visualize Python code execution:

The following tool visualize what the computer is doing step-by-step as it executes the said program:

Python Code Editor :

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Start with a list of integers, keep every other element in place and otherwise sort the list.
Next: Separate parentheses groups.

Python: Tips of the Day

Concatenating iterable to a single string:

>>> x = ["python","really", "rocks"]
>>> " ".join(x)
'python really rocks'

Last update on August 19 2022 21:50:48 (UTC/GMT +8 hours)

Python Basic - 1: Exercise-139 with Solution

Write a Python program to find the closest palindrome number of a given integer. If there are two palindrome numbers in absolute distance return the smaller number

Sample Solution-1:

Python Code:

def test(n):
    x = n
    y = n
    while True:
        if str(x) == str(x)[::-1]:
            return x
        x -=  1
        if str(y) == str(y)[::-1]:
            return y
        y += 1
    return int(bin(n)[::-1][:-2], 2)

n = 120;
print("Original number: ", n);
print("Closest Palindrome number of the said number: ",test(n));
n = 321;
print("Original number: ", n);
print("Closest Palindrome number of the said number: ",test(n));
n = 43;
print("Original number: ", n);
print("Closest Palindrome number of the said number: ",test(n));
n = 1234;
print("Original number: ", n);
print("Closest Palindrome number of the said number: ",test(n));

Sample Output:

Original number:  120
Closest Palindrome number of the said number:  121
Original number:  321
Closest Palindrome number of the said number:  323
Original number:  43
Closest Palindrome number of the said number:  44
Original number:  1234
Closest Palindrome number of the said number:  1221

Flowchart:

Write a python program to find the closest palindrome from a given string

Visualize Python code execution:

The following tool visualize what the computer is doing step-by-step as it executes the said program:

Sample Solution-2:

Python Code:

def test(n):
     result = 0
     while n:
          if str(n-result)==str(n-result)[::-1]:
              return n-result
          elif str(n+result)==str(n+result)[::-1]:
              return n+result
          result+=1

n = 120;
print("Original number: ", n);
print("Closest Palindrome number of the said number: ",test(n));
n = 321;
print("Original number: ", n);
print("Closest Palindrome number of the said number: ",test(n));
n = 43;
print("Original number: ", n);
print("Closest Palindrome number of the said number: ",test(n));
n = 1234;
print("Original number: ", n);
print("Closest Palindrome number of the said number: ",test(n));

Sample Output:

Original number:  120
Closest Palindrome number of the said number:  121
Original number:  321
Closest Palindrome number of the said number:  323
Original number:  43
Closest Palindrome number of the said number:  44
Original number:  1234
Closest Palindrome number of the said number:  1221

Flowchart:

Write a python program to find the closest palindrome from a given string

Visualize Python code execution:

The following tool visualize what the computer is doing step-by-step as it executes the said program:

Python Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a Python program to reverse the binary representation of an given integer and convert the reversed binary number into an integer.
Next: Write a Python program to convert all items in a given list to float values.

Python: Tips of the Day

Concatenating iterable to a single string:

>>> x = ["python","really", "rocks"]
>>> " ".join(x)
'python really rocks'

How do I find the nearest palindrome number in Python?

Next, to find the next palindrome, simply increment the number till your palindrome check is true. Here is how it works: $ python t.py Enter a number: 123 You entered 123, but the next palindrome is 131 $ python t.py Enter a number: 121 Congratulations! 121 is a palindrome.

How do you find the closest palindrome to a given number?

If the number is a single-digit number, the closest palindrome is calculated by decrementing 1 from it. If the number is 10, 100, 1000, and so on, subtract 1 from it to get the closest palindrome.

How do you find the palindrome of a string in Python?

#Define a function def isPalindrome(string): if len(string) < 1: return True else: if string[0] == string[-1]: return isPalindrome(string[1:-1]) else: return False #Enter input string str1 = input("Enter string : ") if(isPalindrome(str1)==True): print("The string is a palindrome.

How do you program a palindrome in Python?

Palindrome Program.
str = 'JaVaJ'.
strstr = str.casefold().
# This string is reverse..
rev = reversed(str).
if list(str) == list(rev):.
print("PALINDROME !").
print("NOT PALINDROME !").