[LeetCode]颠倒整数

题目:

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

示例 1:

输入: 123
输出: 321

示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

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

分析:

  • 1,本题没有额外的要求,又是先进后出,第一想法一般是考虑使用栈的方式。

  • 2,由于入参是int型,如果使用栈的话会额外增加O(n)的空间。在空间开销上可以大幅度优化,所以可以直接采用移位的方式反向存储。
    题设中提醒了数据溢出,所以在最后要判断是否反转的数据是否溢出。

class Solution {
public:
    int reverse(int x) {
        bool negative = x < 0;  
        if (negative) x = -x;  
        long r = 0;  
        while (x>0) {  
            r = r * 10 + x % 10;  
            x /= 10;  
        }  
        if (negative) r = -r;  
        if (r > (pow(2,31)-1) || r < -pow(2,31)) return 0;  
        return (int)r;  
    }
};

上面代码在LeetCode上的运行时间为25 ms。

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

推荐阅读更多精彩内容

  • LeetCode 刷题随手记 - 第一部分 前 256 题(非会员),仅算法题,的吐槽 https://leetc...
    蕾娜漢默阅读 17,985评论 2 36
  • 201. M-Q型显影液组合是()。 (2.0 分) A. 米吐尔与菲尼酮的组合 B. 对苯二酚和菲尼酮的组合 C...
    我们村我最帅阅读 3,734评论 0 4
  • 身为两个孩子的妈妈,一个六岁一个三岁,这六年多的时间经历了太多,太多,养儿方知父母恩这句话是大宝三岁时我才彻底领悟...
    田园姑娘木子姐阅读 899评论 1 3
  • 哇哇,你这图厉害了!上司经过我旁边大喊。搜图搜到肾虚,性生活都还没有,我就性冷淡了,看情色也没劲了,只好去看色情片...
    周小狼v阅读 258评论 2 0
  • 这篇是从几点开始呢? 我没有买卧铺,但是确实没怎么睡呀。又不敢看书,怕晕车,毕竟是身体非最佳状态。现在表示这是一个...
    jieroarchl阅读 157评论 0 1