Skip to content

Commit 4ca736a

Browse files
564
1 parent 19403f6 commit 4ca736a

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# Given a string n representing an integer, return the closest integer (not including itself), which is a palindrome. If there is a tie, return the smaller one.
2+
#
3+
# The closest is defined as the absolute difference minimized between two integers.
4+
#
5+
#
6+
#
7+
# Example 1:
8+
#Input: n = "123"
9+
#Output: "121"
10+
11+
# need to find 2 polindromes first
12+
# return max(save(pol1, pol2))
13+
14+
n = '120' # output 121
15+
16+
def forward_cheking(x) -> int:
17+
18+
while True :
19+
number_to_check = int(x) + 1
20+
number = [i for i in str(number_to_check)]
21+
po1, po2 = 0, len(number) - 1
22+
23+
while po1 < po2:
24+
25+
if number[po1] == number[po2]:
26+
po1 +=1
27+
po2 -=1
28+
else:
29+
number_to_check +=1
30+
number = [i for i in str(number_to_check)]
31+
po1, po2 = 0, len(number) - 1
32+
33+
34+
return number_to_check
35+
36+
37+
def backward_cheking(x) -> int:
38+
39+
while True :
40+
number_to_check = int(x) - 1
41+
number = [i for i in str(number_to_check)]
42+
po1, po2 = 0, len(number) - 1
43+
44+
while po1 < po2:
45+
46+
if number[po1] == number[po2]:
47+
po1 +=1
48+
po2 -=1
49+
else:
50+
number_to_check -=1
51+
number = [i for i in str(number_to_check)]
52+
po1, po2 = 0, len(number) - 1
53+
54+
55+
return number_to_check
56+
57+
58+
def nearestPalindromic(n: str) -> str:
59+
if int(n) < 0:
60+
return '0'
61+
elif 0 < int(n) < 10:
62+
return str(int(n) - 1)
63+
elif int(n) == 10 or int(n) == 11:
64+
return '9'
65+
66+
forward_palindrome = forward_cheking(n)
67+
backward_palindrome = backward_cheking(n)
68+
69+
if abs(forward_palindrome - int(n)) == abs(int(n) - backward_palindrome):
70+
return str(min(forward_palindrome, backward_palindrome))
71+
elif abs(forward_palindrome - int(n)) < abs(int(n) - backward_palindrome):
72+
return str(forward_palindrome)
73+
else:
74+
return str(backward_palindrome)
75+
76+
nearestPalindromic(n)

0 commit comments

Comments
 (0)