Leetcode #9 Palindrome Number

Posted by blueskyson on July 25, 2021

Description

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.

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Solution {
public:
    bool isPalindrome(int x) {
        if (x == 0) {
            return true;
        }
        if (x < 0) {
            return false;
        }
        
        unsigned char arr[15];
        int digit = 0;
        while (x) {
            arr[digit] = (unsigned char)(x % 10);
            x /= 10;
            digit++;
        }
        
        unsigned char *p = arr;
        unsigned char *q = arr + (digit - 1);
        while (q - p > 0) {
            if (*p != *q) {
                return false;
            }
            p++;
            q--;
        }
        return true;
    }
};

Runtime: 8 ms, faster than 77.56% of C++ online submissions for Palindrome Number.

Memory Usage: 5.9 MB, less than 29.51% of C++ online submissions for Palindrome Number.