很简单,就是输入整数,输出它的倒置。

    第一反应就是, 取余得到个位数,然后除以 10 去掉个位数,然后用一个变量保存倒置的数。

    然后似乎不是那么理想。

    为什么呢?倒置过来不应该是 9646324351 吗。其实题目里讲了,int 的范围是

    7. Reverse Integer - 图1

    也就是

    问题的关键就是下边的一句了。

    rev = rev * 10 + pop;

    为了区分两个 rev ,更好的说明,我们引入 temp 。

    temp = rev * 10 + pop;

    rev = temp;

    我们对 temp = rev * 10 + pop; 进行讨论。intMAX = 2147483647 , intMin = - 2147483648 。

    对于大于 intMax 的讨论,此时 x 一定是正数,pop 也是正数。

    对于小于 intMin 的讨论同理。

    7. Reverse Integer - 图2

    次,所以时间复杂度是 O(log(x))。

    空间复杂度:O(1)。

    当然我们可以不用思考那么多,用一种偷懒的方式 AC ,我们直接把 rev 定义成 long ,然后输出前判断 rev 是不是在范围内,不在的话直接输出 0 。

    2. 总结

    比较简单的一道题,主要是在考判断是不是溢出,又是轻松的一天!

    添加好友一起进步~

    如果觉得有帮助的话,可以点击 给一个 star 哦 ^^