**source:**https://leetcode.com/problems/palindrome-number/**C/C++**

**Solution to LeetCode**problem

**9**.

**Palindrome Number**.

## Problem

Given an integer `x`

, return * true if x is a *.

**palindrome**, and false otherwise

## Examples

**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.

## Constraints

- -2
^{31}<= x <= 2^{31}- 1

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

## Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

class Solution {
public:
bool isPalindrome(int x) {
if (x < 0 || (x != 0 && x % 10 == 0))
return false;
int tmp = x;
long rev = 0;
while (tmp > 0) {
int mod = tmp % 10;
tmp /= 10;
rev = (rev * 10) + mod;
}
return rev == x;
}
};