太久没有更新了,现在开学了,开始更新了;
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
遇到这一道题:
我一开始就去动手去做,导致一件事情,编译出错,因为溢出问题
因为这道题有一个很关键的一个东西,环境不允许存储64位整数
分析一下,为什么会有溢出问题;
我百度了一下:
计算机中,当要表示的数据超出计算机所使用的数据的表示范围时,则产生数据的溢出。
溢出原因
数据类型超过了计算机字长的界限就会出现数据溢出的情况。导致内存溢出问题的原因有很多,
这个时候就需要判断:如果出现数据溢出,就说明了这个数据无法计算:
也就是说
他们在进行运算的时候,有一个数据出现了乱码:
class Solution {
public int reverse(int x) {
if(x==0) {
return 0;
}
int y=x>0?x:-x;//此时y代表的值是x的绝对值;
int num;
int res=0;
while(y!=0) {
num = y%10;//最尾部的数
int temp = res;
res = res*10 + num;
y = y/10;
if(res/10!=temp) {//这里就是判断数据是否出现乱码的判断条件
return 0;
}
}
return x>0?res:-res;
}
}