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
- -231 <= x <= 231 - 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;
}
};