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(const int x) {
if (x < 0 || x != 0 && x % 10 == 0) {
return false;
}
int origin = x, reverse = 0;
while (reverse < origin) {
reverse = reverse * 10 + origin % 10;
origin /= 10;
}
return origin == reverse || origin == reverse / 10;
}
};