LeetCode第七题:
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
解题思路:
题目给我们的是一个32位的整数x,暂时先不用想太大,假如系统给了一个三位数,我们要将整个数反转过来,就是将原来的百位变为个位,个位变为百位。首先我们要取得每位上的数组,怎么取呢,通过x除以10再取余,x再变为原来除以10,在Java的除法中,只会保留整数部分。再依次重复以上操作,一直到x=0的时候,整数所有位上的数我们都已经取到了。
怎么让数反转呢,从个位变到十位上只需要乘以10,十位变到百位上再乘以10。就可以想到,取一个初始值为0的变量,变量等于当前
变量乘以10再加上取出来的数
代码实现:
if(x==0){
return 0;
}
int reverse=0;
while(x!=0){
if((reverse*10)/10!=reverse){// 将计算之后的结果 / 10,判断是否与计算之前相同,如果不同,证明发生溢出,返回0
reverse=0;
break;
}
int y=x%10;
x/=10;
reverse=(reverse)*10+y;
}
return reverse;