From 778460c809806cbb8d14b7368c17a5bd9fe49d3f Mon Sep 17 00:00:00 2001 From: Wirgiliusz Date: Mon, 6 Nov 2023 00:43:41 +0100 Subject: [PATCH] Update 0007-reverse-integer.c with proper solution --- c/0007-reverse-integer.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/c/0007-reverse-integer.c b/c/0007-reverse-integer.c index dba240155..3c1d8e4b0 100644 --- a/c/0007-reverse-integer.c +++ b/c/0007-reverse-integer.c @@ -1,12 +1,20 @@ -int reverse(int x) { - long reversed_num = 0; - while (x != 0) { - reversed_num = reversed_num * 10 + x % 10; - x /= 10; +int reverse(int x){ + int res = 0; + + while (x) { + int digit = x % 10; + if ((res > INT_MAX / 10) || + (res < INT_MIN / 10) || + (res == INT_MAX / 10 && digit > INT_MAX % 10) || + (res == INT_MIN && digit > INT_MIN % 10)) { + return 0; + } else { + res *= 10; + } + res += digit; + + x = x / 10; } - - if (reversed_num < INT_MIN || reversed_num > INT_MAX) - return 0; - - return reversed_num; + + return res; } \ No newline at end of file