目录
题目:?7. 整数反转
图解:
思路:
?完整代码:
力扣风采(不是最优再接再励)
给你一个 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
图解:
思路:
? 1.处理边界问题
if(x==Integer.MIN_VALUE||x==Integer.MAX_VALUE){
return 0;
}
? 2.处理符号的正负
int sign=x>0?1:-1;
x=x<0?-x:x;//无论正负,都当成正数
?3.整数转字符串,再转字符数据
String str=String.valueOf(x);
char[] chars=str.toCharArray();
4.交换首位(start)和末位(end)数字,循环操作:依次交换(start++)和(end--)
int start=0,end=chars.length-1;
while (start<end){
//交换两端等距离的元素
char temp=chars[start];
chars[start]=chars[end];
chars[end]=temp;
start++;
end--;
}
5.将原数组转换程字符串,再转成整数输出
long value = Long.valueOf(String.valueOf(chars));
boolean b= value>Integer.MAX_VALUE||value< Integer.MIN_VALUE;
int result=b ? 0: (int)value;
return result*sign;
?完整代码:
public static int reverse(int x){
//1.边界限处理
if(x==Integer.MIN_VALUE||x==Integer.MAX_VALUE){
return 0;
}
//2.处理符号
int sign=x>0?1:-1;
x=x<0?-x:x;//无论正负,都当成正数
//3.整数转字符串,再转字符数据
String str=String.valueOf(x);
char[] chars=str.toCharArray();
//4.交换首位(start)和末位(end)数字,循环操作:依次交换(start++)和(end--)
int start=0,end=chars.length-1;
while (start<end){
//交换两端等距离的元素
char temp=chars[start];
chars[start]=chars[end];
chars[end]=temp;
start++;
end--;
}
//5.将原数组转换程字符串,再转成整数输出
long value = Long.valueOf(String.valueOf(chars));
boolean b= value>Integer.MAX_VALUE||value< Integer.MIN_VALUE;
int result=b ? 0: (int)value;
return result*sign;
}
力扣风采(不是最优再接再励)
|