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