题目描述
给定一个 32 位有符号整数,将整数中的数字进行反转。
示例
输入: 123
输出: 321
输入: -123
输出: -321
输入: 120
输出: 21
注意
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
思路
1.如果不考虑溢出,即把每位取出来再乘;
2.负号可以在处理前先取绝对值,最后判断如果是负数则结果乘-1;
3.考虑溢出,则需要判断会在哪个阶段溢出;
代码(不考虑溢出)
class Solution {
public int reverse(int x) {
int sum=0;
int x1=Math.abs(x);
while(x1!=0){
sum = sum * 10 + x1 % 10;
x1=x1/10;
}
if(x<0){
sum=sum*(-1);
}
return sum;
}
}
代码(考虑溢出)
class Solution {
public int reverse(int x) {
int sum=0;
int x1=Math.abs(x);
while(x1!=0){
int a = sum;
sum = a * 10 + x1 % 10;
if (sum / 10 != a) {
return 0;
}
x1=x1/10;
}
if(x<0){
sum=sum*(-1);
}
return sum;
}
}