leetcode(7)-反转整数

题目

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

示例 1:

输入: 123
输出: 321
示例 2:

输入: -123
输出: -321
示例 3:

输入: 120
输出: 21
注意:

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

代码

class Solution {
    public int reverse(int x) {
        int tmp=Math.abs(x);
        long reversenum=0;
        while(tmp>0){
            reversenum*=10;
            if(reversenum>Integer.MAX_VALUE){
                return 0;
            }
            reversenum+=tmp%10;
            //System.out.println(newnum);
            tmp=tmp/10;
        }
        return (int)(x>0?reversenum:(-1)*reversenum);
    }
}

刷的第三道题,注意的几个点:

  1. reversenum要设成long类型,因为定义的int类型去代表这个值如果溢出来了还是一个与x没什么关系的整数值,用long去保存可能溢出的结果
  2. java还是学的不细心,Integer.MAX_VALUE开始写成了Max_Value,说明还是不够细心,静态final变量全大写记住
  3. if-else的简写形式很方便
  4. 复杂度:时间 O(n) 空间 O(1)
  5. 如果用字符串去转化,那空间复杂度会变成O(n)

发表评论

邮箱地址不会被公开。