From 8e9b1f0fa131a3c29dc0d69ae5e9a4cc1d61614f Mon Sep 17 00:00:00 2001 From: kr0st Date: Tue, 2 Dec 2025 00:20:34 +0100 Subject: [PATCH] Accepted solution for problem 9 - palindrome number. --- 9-palindrome-number.cpp | 26 ++++++++++++++++++++++++++ main.cpp | 4 ++++ 2 files changed, 30 insertions(+) create mode 100644 9-palindrome-number.cpp diff --git a/9-palindrome-number.cpp b/9-palindrome-number.cpp new file mode 100644 index 0000000..efac94f --- /dev/null +++ b/9-palindrome-number.cpp @@ -0,0 +1,26 @@ +#include + +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; + } +}; diff --git a/main.cpp b/main.cpp index 69204b0..8e8d855 100644 --- a/main.cpp +++ b/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; }