9. Palindrome Number
1. Description
Given an integer x, return true if x is a palindrome, and false otherwise.
2. Example
Example 1
Input: x = 121
Output: true
Explanation: 121 reads as 121 from left to right and from right to left.
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.
3. Constraints
- −2$^{31}$ <= x <= 2$^{31}$ − 1
4. Solutions
Math
Time complexity: O(logn)
Space complexity: O(1)
class Solution {
public:
bool isPalindrome(int x) {
if (x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
int right_half = 0;
while (x > right_half) {
right_half = right_half * 10 + x % 10;
x /= 10;
}
return x == right_half || x == right_half / 10;
}
};