【LeetCode & 剑指offer 刷题笔记】目录(持续更新中...)
Reverse Integer
Given a 32-bit signed integer, reverse digits of an integer.
Example 1:
Input:
123
Output:
321
Example 2:
Input:
-123
Output:
-321
Example 3:
Input:
120
Output:
21
Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−2
31
, 2
31
− 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
#include<climits>
/*static int x = []() {
std::ios::sync_with_stdio(false);
cin.tie(NULL);
return 0;
}();*/
class
Solution
{
public
:
int
reverse
(
int
x
)
{
//int反转后最大也不超过用33位(1000……)。
long
long
res
=
0
;
//保证即使在32位系统中变量也为64位,比int位宽大
long
long
t
=
x
;
//中间变量
t
=
t
>
0
?
t
:-
t
;
//取绝对值
while
(
t
>
0
)
{
res
=
res
*
10
+
t
%
10
;
t
/=
10
;
//t除以10再模10就能依次获得各位数字
}
//判断符号
if
(
x
>
0
)
//处理溢出情况
{
if
(
res
>
INT_MAX
)
return
0
;
else
return
res
;
}
else
{
res
=
-
res
;
if
(
res
<
INT_MIN
)
return
0
;
else
return
res
;
}
}
};