https://leetcode.com/problems/palindrome-number
Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward. Example 1: Input: 121 Output: true Example 2: Input: -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: 10 Output: false Explanation: Reads 01 from right to left. Therefore it is not a palindrome. Follow up: Coud you solve it without converting the integer to a string?
class Solution {
public:
bool isPalindrome(int x) {
}
};
class Solution {
public:
bool isPalindrome(int x) {
if (x < 0)
return false;
if (x < 10)
return true;
// for example x = 12345,
// finally, rightDigit = 5,
// x = 1,
// x1 = 234,
// x2 = 432
int rightDigit = x % 10;
x = x / 10;
int x2 = 0;
int x1 = 0;
int base = 1;
while (x > 9){
int digit = x % 10;
x = x / 10;
x2 = x2 * 10 + digit;
x1 = x1 + digit * base;
base *= 10;
}
return x == rightDigit && x1 == x2;
}
};