给出一个32位的有符号的整数,你需要将这个整数中每位上的数字进行反转。
// 示例1
输入:123
输出:321
// 示例2
输入:-123
输出:-321
// 示例3
输入:120
输出:21
注意:假设我们的环境只能存储得下32位的有符号整数,则其数值范围为[-231,231-1]。请根据这个假设,如果反转后整数溢出那么就返回0。
解题
- 传入的32位有符号整数若大于0并且经反转后理论上应大于 2^31-1(Integer.MAX_VALUE),则反转后的数将变成负数
-
传入的32位有符号整数若小于0并且经反转后理论上应小于 -2^31(Integer.MIN_VALUE),则反转后的数将变成正数
实现
public class Solution {
public static void main(String[] args) {
// srcInt典型值可选:0 | 123 | -123 | Integer.MAX_VALUE | Integer.MIN_VALUE
int srcInt = Integer.MIN_VALUE ;
System.out.println(reverse(srcInt));
}
private static int reverse(int srcInt) {
/*
* 因为题目并没说被反转的数不能为0,所以如果 srcInt == 0,这里也返回0
*/
int rsInt = 0;
if(srcInt > 0) {
while(srcInt != 0) {
rsInt = rsInt*10 + srcInt%10;
srcInt /=10;
}
rsInt = rsInt < 0 ? 0 : rsInt;
}else if(srcInt < 0) {
while(srcInt != 0) {
rsInt = rsInt*10 + srcInt%10;
srcInt /=10;
}
rsInt = rsInt > 0 ? 0 : rsInt;
}
return rsInt;
}
}
网友评论