Accepted solution for problem 9 - palindrome number.
This commit is contained in:
26
9-palindrome-number.cpp
Normal file
26
9-palindrome-number.cpp
Normal file
@@ -0,0 +1,26 @@
|
||||
#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;
|
||||
}
|
||||
};
|
||||
4
main.cpp
4
main.cpp
@@ -2,6 +2,7 @@
|
||||
|
||||
#include "1-two-sum.cpp"
|
||||
#include "2-add-two-numbers.cpp"
|
||||
#include "9-palindrome-number.cpp"
|
||||
|
||||
int main() {
|
||||
TwoSumSolution twoSumSolution;
|
||||
@@ -52,5 +53,8 @@ int main() {
|
||||
}
|
||||
std::cout << std::endl;
|
||||
|
||||
PalindromeNumberSolution p;
|
||||
std::cout << "Is 1 palindrome? " << p.isPalindrome(1) << std::endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user