Skip to content

Commit 0b635c1

Browse files
Implement palindrome number checker function
This function checks if a given integer is a palindrome without converting it to a string. It includes examples and handles negative numbers.
1 parent c79034c commit 0b635c1

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

maths/is_palindrome_number.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
"""
2+
Check if a given integer is a palindrome mathematically.
3+
"""
4+
5+
6+
def is_palindrome_number(number: int) -> bool:
7+
"""
8+
Checks if a given integer is a palindrome without converting it to a string.
9+
A palindrome is a number that reads the same backward as forward.
10+
Negative numbers are not considered palindromes by this definition.
11+
12+
Args:
13+
number: The integer to check.
14+
15+
Returns:
16+
True if the number is a palindrome, False otherwise.
17+
18+
Examples:
19+
>>> is_palindrome_number(121)
20+
True
21+
>>> is_palindrome_number(123)
22+
False
23+
>>> is_palindrome_number(10)
24+
False
25+
>>> is_palindrome_number(12321)
26+
True
27+
>>> is_palindrome_number(7)
28+
True
29+
>>> is_palindrome_number(0)
30+
True
31+
>>> is_palindrome_number(-121)
32+
False
33+
"""
34+
# Negative numbers are not considered palindromes
35+
if number < 0:
36+
return False
37+
38+
original_number = number
39+
reversed_number = 0
40+
41+
while number > 0:
42+
# Get the last digit
43+
digit = number % 10
44+
45+
# Build the reversed number
46+
reversed_number = (reversed_number * 10) + digit
47+
48+
# Remove the last digit from the original number
49+
number //= 10
50+
51+
# Compare the original with the reversed number
52+
return original_number == reversed_number
53+
54+
55+
if __name__ == "__main__":
56+
import doctest
57+
doctest.testmod()

0 commit comments

Comments
 (0)