From 59d1cb72456b434e38d8752eac49e207309f13d8 Mon Sep 17 00:00:00 2001 From: Sainnhe Park Date: Wed, 2 Nov 2022 21:34:49 +0800 Subject: [PATCH] s0007 --- include/s0007_reverse_integer.hpp | 12 ++++++++++++ src/s0007_reverse_integer.cpp | 20 ++++++++++++++++++++ tests/s0007_reverse_integer.cpp | 31 +++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 include/s0007_reverse_integer.hpp create mode 100644 src/s0007_reverse_integer.cpp create mode 100644 tests/s0007_reverse_integer.cpp diff --git a/include/s0007_reverse_integer.hpp b/include/s0007_reverse_integer.hpp new file mode 100644 index 0000000..82f7328 --- /dev/null +++ b/include/s0007_reverse_integer.hpp @@ -0,0 +1,12 @@ +#ifndef S0007_REVERSE_INTEGER +#define S0007_REVERSE_INTEGER + +#include +#include + +class Solution { +public: + int reverse(int x); +}; + +#endif diff --git a/src/s0007_reverse_integer.cpp b/src/s0007_reverse_integer.cpp new file mode 100644 index 0000000..e830cd5 --- /dev/null +++ b/src/s0007_reverse_integer.cpp @@ -0,0 +1,20 @@ +#include "s0007_reverse_integer.hpp" + +int Solution::reverse(int x) { + int r{0}; + std::queue queue; + + while (x != 0) { + queue.push(x % 10); + x = static_cast((x - (x % 10)) / 10); + } + while (!queue.empty()) { + if (r < INT_MIN / 10 || r > INT_MAX / 10) { + return 0; + } + r = r * 10 + queue.front(); + queue.pop(); + } + + return r; +} diff --git a/tests/s0007_reverse_integer.cpp b/tests/s0007_reverse_integer.cpp new file mode 100644 index 0000000..2d9c4e0 --- /dev/null +++ b/tests/s0007_reverse_integer.cpp @@ -0,0 +1,31 @@ +#include "s0007_reverse_integer.hpp" + +#include + +TEST(Problem7, Case1) { + int i = 123; + int o = 321; + Solution solution; + EXPECT_EQ(solution.reverse(i), o); +} + +TEST(Problem7, Case2) { + int i = -123; + int o = -321; + Solution solution; + EXPECT_EQ(solution.reverse(i), o); +} + +TEST(Problem7, Case3) { + int i = 120; + int o = 21; + Solution solution; + EXPECT_EQ(solution.reverse(i), o); +} + +TEST(Problem7, Case4) { + int i = -2147483648; + int o = 0; + Solution solution; + EXPECT_EQ(solution.reverse(i), o); +}