From 8c412a4198880414c24d2d2105ddd74c76a7ab48 Mon Sep 17 00:00:00 2001 From: Rfontt Date: Thu, 11 Dec 2025 21:44:17 -0300 Subject: [PATCH 1/3] feat: add reverse_integer --- .../reverse_integer.cpp | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 operations_on_datastructures/reverse_integer.cpp diff --git a/operations_on_datastructures/reverse_integer.cpp b/operations_on_datastructures/reverse_integer.cpp new file mode 100644 index 00000000000..e1df9ac3fd4 --- /dev/null +++ b/operations_on_datastructures/reverse_integer.cpp @@ -0,0 +1,47 @@ +/** + * @file + * @brief Provides a function to reverse the digits of a 32-bit integer safely. + * + * This implementation reverses the digits of an integer while preventing + * overflow by checking limits against INT32_MAX and INT32_MIN. + * + * @author [Rfontt](https://github.com/Rfontt) + */ + +#include +#include + +/** + * @brief Reverses the digits of a 32-bit signed integer. + * + * This function extracts digits one by one from the input integer and builds + * the reversed number. Before each multiplication and addition, it checks + * whether the operation would overflow a 32-bit signed integer. If an overflow + * would occur, the function returns 0. + * + * @param number The integer whose digits will be reversed. + * @return The reversed integer, or 0 if the reversal would overflow. + */ +int reverse(int number) { + int32_t reversed = 0; + + while (number != 0) { + int digit = number % 10; + + if (reversed > INT32_MAX / 10 || reversed < INT32_MIN / 10) { + return 0; + } + + reversed = reversed * 10 + digit; + + number = number / 10; + } + + return reversed; +} + +int main() { + int reversed = reverse(123); + + std::cout << "Number reversed: " << reversed << "\n"; +} From 4863562ca2e8c22a6d2bfc40c1fbf773617e4ed8 Mon Sep 17 00:00:00 2001 From: Rfontt Date: Thu, 11 Dec 2025 21:56:32 -0300 Subject: [PATCH 2/3] feat: adding tests --- operations_on_datastructures/reverse_integer | Bin 0 -> 38800 bytes .../reverse_integer.cpp | 34 ++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) create mode 100755 operations_on_datastructures/reverse_integer diff --git a/operations_on_datastructures/reverse_integer b/operations_on_datastructures/reverse_integer new file mode 100755 index 0000000000000000000000000000000000000000..379f94b4a1625902ebf3198d7243900a8e5b1ee6 GIT binary patch literal 38800 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 #include #include @@ -40,8 +41,37 @@ int reverse(int number) { return reversed; } +void test() { + // Positive numbers + assert(reverse(123) == 321); + assert(reverse(1) == 1); + assert(reverse(10) == 1); + + // Negative numbers + assert(reverse(-123) == -321); + assert(reverse(-10) == -1); + + // Edge cases + assert(reverse(0) == 0); + + // Reverse of 1534236469 would overflow 32-bit + assert(reverse(1534236469) == 0); + + // Reverse of INT32_MAX (2147483647) also overflows + assert(reverse(std::numeric_limits::max()) == 0); + + // Reverse of INT32_MIN (−2147483648) also overflows + assert(reverse(std::numeric_limits::min()) == 0); + + // Palindromes + assert(reverse(1221) == 1221); + assert(reverse(-1221) == -1221); + + std::cout << "All tests passed!\n"; +} + int main() { - int reversed = reverse(123); + test(); - std::cout << "Number reversed: " << reversed << "\n"; + return 0; } From c2250269f2ed3fe7804cab415af64e68a7052e81 Mon Sep 17 00:00:00 2001 From: Rfontt Date: Thu, 11 Dec 2025 22:00:45 -0300 Subject: [PATCH 3/3] docs: Documentation changes --- operations_on_datastructures/reverse_integer | Bin 38800 -> 0 bytes .../reverse_integer.cpp | 8 ++++++++ 2 files changed, 8 insertions(+) delete mode 100755 operations_on_datastructures/reverse_integer diff --git a/operations_on_datastructures/reverse_integer b/operations_on_datastructures/reverse_integer deleted file mode 100755 index 379f94b4a1625902ebf3198d7243900a8e5b1ee6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38800 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