-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathPalindrome.py
53 lines (42 loc) · 1.3 KB
/
Palindrome.py
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
#
# Example 1:
#
# Input: 121
# Output: true
# Example 2:
#
# Input: -121
# Output: false
# Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
# Example 3:
#
# Input: 10
# Output: false
# Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
# Follow up:
#
# Could you solve it without converting the integer to a string?
def is_palindrome(x):
if x < 0:
return False
elif 0 < x < 10:
return True
second_half = 0
while second_half < x:
second_half = (second_half * 10 + (x % 10))
x = x // 10
if second_half == 0:
break
return x == second_half or x == second_half // 10;
if __name__ == '__main__':
num1 = 121
num2 = 1221
num3 = 1
num4 = 10
num5 = 1234231
print (str(num1) + " is palindrome? => " + str(is_palindrome(num1)))
print (str(num2) + " is palindrome? => " + str(is_palindrome(num2)))
print (str(num3) + " is palindrome? => " + str(is_palindrome(num3)))
print (str(num4) + " is palindrome? => " + str(is_palindrome(num4)))
print (str(num5) + " is palindrome? => " + str(is_palindrome(num5)))