27 lines
763 B
C++
27 lines
763 B
C++
#include<iostream>
|
|
|
|
class PalindromeNumberSolution {
|
|
|
|
private:
|
|
void palindromer(unsigned long x, unsigned long *p, unsigned long d, unsigned long *max_d) {
|
|
if (x == 0) return;
|
|
if (d > *max_d) *max_d = d;
|
|
palindromer(x / 10, p, d * 10, max_d);
|
|
*p += x % 10 * (*max_d / d);
|
|
return;
|
|
}
|
|
public:
|
|
bool isPalindrome(int x) {
|
|
if (x < 0) return false;
|
|
if (x < 10) return true;
|
|
|
|
auto absX = (unsigned long)x;
|
|
std::cout << "absX = " << absX << std::endl;
|
|
unsigned long palindrome = 0;
|
|
unsigned long max_d = 0;
|
|
palindromer(absX, &palindrome, 1, &max_d);
|
|
//std::cout << "reverse(absX) = " << palindrome << std::endl;
|
|
return absX == palindrome;
|
|
}
|
|
};
|