Post

9 Palindrome Number

9 Palindrome Number

Palindrome Number image

Given an integer x, return true* if x is a **palindrome*, and *false otherwise*.

 

Example 1:

1
2
3
4
5
**Input:** x = 121
**Output:** true
**Explanation:** 121 reads as 121 from left to right and from right to left.

Example 2:

1
2
3
4
5
**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:

1
2
3
4
5
**Input:** x = 10
**Output:** false
**Explanation:** Reads 01 from right to left. Therefore it is not a palindrome.

 

Constraints:

1
-231 <= x <= 231 - 1

 

Follow up: Could you solve it without converting the integer to a string?

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

bool isPalindrome(int x) {
    int k = 1;
    while(x/k >= 10){
        k = k * 10;
    }
    if (x < 0) {
        return false;
    }
    int l = 10;
    int y = x;
    //printf("%d %d", x/k, y%l);
    while(k >= 1 && y >= 1 && x/k == y%l ){
        x = x % k;
        k = k /10;
        y = y / 10;
    }

    if (x == 0) {
        return true;
    }
    return false;

}



This post is licensed under CC BY 4.0 by the author.