反转整数

题目描述

给定一个 32 位有符号整数,将整数中的数字进行反转。

示例

输入: 123
输出: 321
输入: -123
输出: -321
输入: 120
输出: 21

注意

假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。

思路

1.如果不考虑溢出,即把每位取出来再乘;
2.负号可以在处理前先取绝对值,最后判断如果是负数则结果乘-1;
3.考虑溢出,则需要判断会在哪个阶段溢出;


反转整数_第1张图片
分析.jpg

代码(不考虑溢出)

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;
    }
}

你可能感兴趣的:(反转整数)