整数反转

简介: 题目要求将32位有符号整数的每一位数字反转,并考虑溢出情况。提供了两种Java实现:一种通过字符串操作实现,另一种使用数学运算,后者更为高效且简洁。两种方法均在检测到溢出时返回0。

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0
更适合开发阅读的代码
Java
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static int reverse2(int x) {
String xString = Integer.toString(x);
String string = xString;
int flag = 1;
if (x < 0) {
flag = -1;
// 负数去-号
string = xString.substring(1);
}
try {
return Integer.valueOf((new StringBuilder(string)).reverse().toString()) flag;
}catch (Exception e){
// 越界直接返回0
return 0;
}
}
更便捷的代码
Java
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public int reverse(int x) {
int res = 0;
while (x != 0) {
int t = x % 10;
int newRes = res
10 + t;
//如果数字溢出,直接返回0
if ((newRes - t) / 10 != res)
return 0;
res = newRes;
x = x / 10;
}
return res;
}
// 实际上我们还可以改的更简洁一下
public int reverse(int x) {
long res = 0;
while (x != 0) {
res = res * 10 + x % 10;
x /= 10;
}
return (int) res == res ? (int) res : 0;
}

目录
相关文章
|
6月前
|
存储 Python
leetcode-7:整数反转
leetcode-7:整数反转
36 1
|
存储 算法
LeetCode7-整数反转
LeetCode7-整数反转
|
1月前
|
存储
LeetCode整数反转
解决LeetCode上的整数反转问题的几种方法,包括错误的方法和优化后的解决方案,以及如何避免反转后的整数超出32位有符号整数范围的问题。
35 1
|
1月前
|
Python
07_整数反转2021-04-18
07_整数反转2021-04-18
12 0
|
3月前
|
算法
LeetCode第7题整数反转
该文章介绍了 LeetCode 第 7 题整数反转的解法,通过除 10 取模和乘 10 累加的方式实现整数反转,同时注意边界情况的判断,并总结了通过举例推算发现规律的解题思路。
LeetCode第7题整数反转
|
5月前
7.整数反转
7.整数反转
|
6月前
|
存储 C++
整数反转(C++)
整数反转(C++)
32 0
|
存储 算法 安全
LeetCode - #7 反转整数
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
|
存储 Java Python
leetcode:7.整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
42 0
|
存储
整数反转1
整数反转1
67 0