GeetCode Hub

Given an integer x, return true if x is palindrome integer.

An integer is a palindrome when it reads the same backward as forward. For example, 121 is palindrome while 123 is not.


Example 1:

Input: x = 121
Output: true

Example 2:

Input: x = -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: x = 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.

Example 4:

Input: x = -101
Output: false



  • -231 <= x <= 231 - 1


Follow up: Could you solve it without converting the integer to a string?

class Solution { public: bool isPalindrome(int x) { if( x < 0) return false; if( x / 10 == 0) return true; int base = 1; while(x/base >= 10){ base = base*10; } while(x > 0){ int right = x%10; int left = x/base; if(right != left) return false; x = (x - left*base)/10; base /= 100; } return true; } };

This question requires knowledge of the concept of reversing an integer. Once we are able to reverse the given integer, then we just require to compare the current given number with the reversed number. If both the given number and the reversed number are the same, then the given integer is a palindrome otherwise it is not a palindrome.

Time Complexity: O(d) // where d is the number of digits in the integer.

Space Complexity: O(1) // As we are not taking any extra space, so it is a constant space.