反转整数

题目描述

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

示例

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

注意

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

思路

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


分析.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;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 7. 反转整数 描述 给定一个 32 位有符号整数,将整数中的数字进行反转。 示例 注意 假设我们的环境只能存储 ...
    GoMomi阅读 4,300评论 0 1
  • 将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数)。 样例给定x = 123,返...
    六尺帐篷阅读 3,959评论 0 1
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 难度:容易 要求: 将一个整数中的数字进行颠倒,当颠倒后的整...
    柒黍阅读 3,199评论 0 0
  • 将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数)。样例 从低到高逐位处理 每次...
    和蔼的zhxing阅读 832评论 0 0
  • “你!站起来,回答这个问题!”程老师洪亮的声音在班里荡漾着,一个个同学从座位上站起来,像小犯人一样看着老师,眼神里...
    Eliaukkkk阅读 3,860评论 0 1