From ff747fe611bc095a6c17d1da8696f368eae451f1 Mon Sep 17 00:00:00 2001 From: LiEmail Date: Tue, 17 Mar 2015 11:14:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E4=B8=80=E6=AD=A5=E5=AE=8C=E5=96=84[R?= =?UTF-8?q?everse=20Integer]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 考虑 负数,溢出的情况 --- C++/chapImplement.tex | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/C++/chapImplement.tex b/C++/chapImplement.tex index 6c0aeab8..fcd8ae7b 100644 --- a/C++/chapImplement.tex +++ b/C++/chapImplement.tex @@ -33,15 +33,26 @@ \subsubsection{代码} \begin{Code} //LeetCode, Reverse Integer // 时间复杂度O(logn),空间复杂度O(1) +// 考虑 1.负数的情况 2. 溢出的情况(正溢出&&负溢出,比如 x = -2147483648(即-2^31) ) class Solution { public: int reverse (int x) { - int r = 0; - - for (; x; x /= 10) - r = r * 10 + x % 10; - - return r; + long long r = 0; + long long t = x; + t = t > 0 ? t : -t; + for (; t; t /= 10) + r = r * 10 + t % 10; + + bool sign = x > 0 ? false: true; + if (r > 2147483647 || (sign && r > 2147483648)) { + return 0; + } else { + if (sign) { + return -r; + } else { + return r; + } + } } }; \end{Code}