forked from ngiengkianyew/daily-coding-problem
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathproblem_034.py
More file actions
27 lines (20 loc) · 784 Bytes
/
problem_034.py
File metadata and controls
27 lines (20 loc) · 784 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def is_palindrome(s):
return s[::-1] == s
def get_nearest_palindrome(s):
if is_palindrome(s):
return s
if s[0] == s[-1]:
return s[0] + get_nearest_palindrome(s[1:-1]) + s[-1]
else:
pal_1 = s[0] + get_nearest_palindrome(s[1:]) + s[0]
pal_2 = s[-1] + get_nearest_palindrome(s[:-1]) + s[-1]
if len(pal_1) > len(pal_2):
return pal_2
elif len(pal_1) < len(pal_2):
return pal_1
return pal_1 if pal_1 < pal_2 else pal_2
assert get_nearest_palindrome("racecar") == "racecar"
assert get_nearest_palindrome("google") == "elgoogle"
assert get_nearest_palindrome("egoogle") == "elgoogle"
assert get_nearest_palindrome("elgoog") == "elgoogle"
assert get_nearest_palindrome("race") == "ecarace"