1. 题目
题目截图
2. 讲解
题目的意思就是倒着取原始数字,并且排除大于或小于32位整数的情况。
然后将结果输出即可。
比如我输入123456,那你输出654321,
如果是-19962020,那输出-2026991
3. 思路
这么一看挺简单的,因为人的思维可以直接通过倒着看就能直接得到结果。
那么机器怎么实现呢?
这就是将人脑的运算过程以一种可重复的实现方式来记录。
根据题目的要求我们可以清楚知道,这就是不断取一个数的最后一位,经过进位后存储,然后再去除最后一位数,进入循环,直到取不到数字为止。
可以参考如下运算过程:
运算过程
4. 参考代码
public class L0007 {
public static void main(String[] args) {
int[] nums = {123, -123, 123456000,123456789, 888999000,-78912300, -1239870089};
for (int num :nums) {
System.out.println(new L0007().reverse(num));
}
}
/**
* 思路:倒着取每一位数字,然后一直*10进行扩大存储。然后原数字依次去除最后一位。
* @param num 原始数字
* @return 反转后数字
*/
public int reverse(int num) {
// 结果存放,必须要大于int,因为反转有溢出问题。
long result = 0;
while (num != 0){
// *10相当于扩大一位 %10相当于取最后一位数字
result = result*10 + num%10;
// 相当于去掉数字的最后一位,比如原数123,执行之后变成12
num /= 10;
}
// 看看是不是超过int最大最小值了
if (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) {
return 0;
}
return (int)result;
}
}
运行截图
网友评论