LeetCode 07 整数反转

LeetCode 07 整数反转


题目:
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
 
示例 1:

输入:x = 123
输出:321
示例 2:

输入:x = -123
输出:-321
示例 3:

输入:x = 120
输出:21
示例 4:

输入:x = 0
输出:0
 

提示:

-231 <= x <= 231 - 1
通过次数1,087,516提交次数3,074,044

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解:
思路很简单,每次取原数最低位加上新数✖️10即可

图解:
例:12345  步骤如下:
1234123121
⬇(5)⬇(4)⬇(3)⬇(2)⬇(1)
0x10+5=55x10+4=5454x10+3=543543x10+2=54325432x10+1=54321
需要注意的是反转后的数字可能超过Int类型数值范围,可巧妙利用Long类型存储后转换

代码:
1
2
3
4
5
6
7
8
public int reverse(int x) {
long n = 0;
while(x != 0) {
n = n*10 + x%10;
x = x/10;
}
return (int)n==n? (int)n:0;
}