In this method, we convert the integer to a string and check if it reads the same forwards and backwards. This approach is straightforward and leverages the built-in string operations.
Time Complexity: O(n), where n is the length of the string representation of the number.
Space Complexity: O(n) for the string conversion.
1def isPalindrome(x: int) -> bool:
2 if x < 0:
3 return False
4 return str(x) == str(x)[::-1]
5
After checking if the number is negative, the function converts the number to a string and uses Python slicing to reverse the string. It compares the original and reversed string to check if they are the same.
This approach avoids the use of string conversions by reversing half of the digits of the number and comparing the two halves. This is more memory efficient as it only creates a few integer variables.
Time Complexity: O(log10(n)), where n is the input number because we are dividing the number by 10 in each iteration.
Space Complexity: O(1) because no additional space proportional to input size is used.
1public class Solution {
2 public bool IsPalindrome(int x) {
3 if (x < 0 || (x % 10 == 0 && x != 0)) return false;
4 int reversedHalf = 0;
5 while (x > reversedHalf) {
6 reversedHalf = reversedHalf * 10 + x % 10;
7 x /= 10;
8 }
9 return x == reversedHalf || x == reversedHalf / 10;
10 }
11}
12
This method handles situations where x is negative or ends with zero, as such numbers cannot be palindromes. It iteratively builds the reversed half by manipulating digits and compares the two halves for equality.