给你一个 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
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
我的Solution:
class Solution{
public int reverse(int x){
if(x==0) return x;
if(x==-2147483648) return 0;
int flag = 0;
if(x<0){
flag=1;
x = -x;
}
long y = 0;
int i=0;
while(x!=0){
y*=10;
int num = x%10;
x/=10;
y+=num;
}
if(flag==1){
y*=-1;
if(y<Integer.MIN_VALUE){
return 0;
}
return (int)y;
}
if(y>Integer.MAX_VALUE){
return 0;
}
return (int)y;
}
}
大佬代码:
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;
}
另外还有一个思路:
捕获异常进行处理,比如转换成字符串进行反转,再强制转换,如果报错则返回0