Question

Determine whether an integer is a palindrome. Do this without extra space.

Solution

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
bool isPalindrome(int x) {
    if (x < 0 || (x % 10 == 0 && x != 0))
    {
        return false;
    }

    int rev = 0;

    while (x > rev)
    {
        rev = rev * 10 + x % 10;
        x /= 10;
    }

    return (x == rev || x == rev / 10) ? true : false;
}

Experience

不是很懂 extra space 的含义,一开始以为多一个int也不行。