zoukankan      html  css  js  c++  java
  • LeetCode之整数翻转超详细java讲解

     

    描述:给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)

    思路:就是一般的整数翻转,不过需要注意两个check点。。。。(都是泪)

       1:整数可正可负,但是在这里面可以不用考虑,因为x为正数和负数的情况下的思路都是相同的。

          当x为正数时。将a=x%10,得到x的个位数。ret = ret*10+a。后面依次进行即可得到翻转后的整数。

                      例如:x=235

                     (5*10+3)*10+2=532.

          当x为负数时,这种思路也是成立的。

        2: 翻转过程中需要考虑溢出的情况。

           在x的翻转的过程中会出现溢出的情况,1199483674这个整数没超出int的范围-2^32~2^31,但是翻转的过程中会出现溢出。

       if(ret>Integer.MAX_VALUE/10 || ret<Integer.MIN_VALUE/10){
                           return 0;
                     }
    ret>Integer.MAX_VALUE/10这个用来判断正数是否溢出,只需要判断到最大值的十分之一即可,因为当x的位数和int的最大值位数一样时,翻转后的最后面的一位
    肯定不会超过int最大值的第一位,因为输入时的值已经被int限制了,不可能大于int最大值。
    时间复杂度:O(1)
    空间复杂度:O(1)


    完整代码如下:
    public int Reserve(int x){
        int ret = 0;
        while(x != 0){
            if(ret>Integer.MAX_VALUE/10 || ret<Integer.MIN_VALUE/10){
                return 0;
            }
            ret = ret*10 + x%10;
            x = x/10;
        }
        return ret;
    }
    

     

    2021-05-25


  • 相关阅读:
    C#基本语法
    C#程序结构
    C#环境
    C#强大的编程功能
    Razor
    Web Pages
    ASP.NET教程
    [ecmagnet][django] 如何使用django的signal
    [ecmanget][常用标签]bookmark
    [muku][1 初始restful api] chorme安装jsonview 插件
  • 原文地址:https://www.cnblogs.com/liuhuaabcp/p/14809547.html
Copyright © 2011-2022 走看看