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;
    }
};
Last updated:
Tags: Math
comments powered by Disqus