查看原文
其他

从0打卡leetcode之day8--反转整数

帅地 苦逼的码农 2019-01-22

前沿

貌似这次没啥前言,,有的就是这道题比较简单….

题目描述

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

示例1

输入: 123 输出: 321

示例2

输入: -123 输出: -321

示例3

输入: 120 输出: 21

注意

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

我的解题思路

这道题还是比较简单的,在leetcode的定位属于简单级别。需要处理的点只有两个,一个是把数字反转,一个是判断是否溢出。

数字反转我猜大家玩c的时候都弄过,就不多加说明了。

不过那个判断溢出的,我是用一个long类型的变量来存放反转后的数,然后再来进行比较的。

直接上代码:

public int reverse(int x) {
       //标记正负数
       boolean flag = false;
       //存放反转后的数
       long y = 0;
       if(x < 0){
           flag = true;
           x = -x;
       }
       //进行反转
       while(x > 0){
           y = y * 10 + x % 10;
           x = x / 10;
       }
       if(flag)
           y = -y;

       if(y > Math.pow(2,31) - 1 || y < Math.pow(-2,31)){
           return 0;
       }else{
           return (int)y;
       }
   }


假如你是用java做的,不知道你有没这种想法:

就是通过把数字转换为字符串,然后再把字符串转换为int类型。这种做法我觉得不大友好,因为对于末尾的0本来我们是要弃掉的,它也会被转换过来,而且这种做法的时间复杂度和空间复杂度都更高。

假如你们有更加优雅的做法,欢迎指点出来。我创建了一个leetcode的讨论群,如果你想进,可以加我微信(公号右下方有我的微信),备注“leetcode”,我拉你进群,不过,貌似这群有点不活跃,哈哈,可能是我没有带动大家….

推荐阅读:

从0打卡leetcode之day7--Z字形变换

回车与换行的故事


关注公我的众号:苦逼的码农,获取更多原创文章,后台回复礼包送你一份特别的资源大礼包。同时也感谢把文章介绍给更多需要的人。

确定不点赞、关注支持一下?,thanks

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存