给你一个 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
主要是用String中的resverse方法
public static int reverse(int x) {
//先转换为String类型的字符串 主要是想用String中的字符反转方法
String s =Integer.toString(x);
StringBuilder sb =new StringBuilder();
//如果为负数的话 先将-之后的数进行保存下来,存到StringBuiler中
if(s.charAt(0) == '-'){
sb.append(s.substring(1));
}else{
sb.append(s);
}
sb.reverse();
//反转之后 再将-插入到s中
if (s.charAt(0) == '-'){
sb.insert(0, '-');
}
//转换成long判断字符溢出的问题
long parseLong = Long.parseLong(sb.toString());
if(parseLong > Integer.MAX_VALUE || parseLong < Integer.MIN_VALUE) return 0;
return (int)parseLong;
}
主要是用取余的方法
public static int reverse(int x) {
int res=0;
while (x!=0){
int last =x%10;
x/=10;
if(res>Integer.MAX_VALUE /10 || res ==Integer.MAX_VALUE/10 && last >7 ) return 0;
if (res<Integer.MIN_VALUE /10 || res ==Integer.MIN_VALUE/10 && last <-8) return 0;
res =res*10+last;
}
return res;
}