反转数字
描述
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。翻转可能会导致溢出,如果反转后的结果会溢出就返回 0。
解题
Solution
/**
* 反转数字
* 取余,长整数
*/
public class Solution {
public static void main(String[] args) {
Solution s1 = new Solution();
System.out.println(s1.reverse3(2123456789));
}
public int reverse(int x){
if (x==0) return 0;
long result = 0;
while(x!=0){
result = result*10+x%10;
x/=10;
}
return (int) result == result? (int) result:0;
}
public int reverse2(int x){
if (x==0) return 0;
int res = 0;
while(x!=0){
int newres = res*10+x%10;
if ((newres-x%10)/10!=res) return 0;
x/=10;
res=newres;
}
return res;
}
public int reverse3(int x){
if (x==0) return 0;
long res = 0;
while(x!=0){
res = res*10+x%10;
x/=10;
}
if (res<Integer.MIN_VALUE||res>Integer.MAX_VALUE) return 0;
return (int) res;
}
}