LintCode - 反转整数(普通)

版权声明:本文为博主原创文章,未经博主允许不得转载。

难度:容易
要求:

将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数)。

样例

给定 x = 123,返回 321
给定 x = -123,返回 -321

思路
通过对数字模十取余得到它的最低位。其实本题考查的是整数相加的溢出处理,检查溢出有这么几种办法:

  • 两个正数数相加得到负数,或者两个负数相加得到正数,但某些编译器溢出优化的方式不一样
  • 对于正数,如果最大整数减去一个数小于另一个数,或者对于负数,最小整数减去一个数大于另一个数,则溢出。这是用减法来避免加法的溢出。
  • 使用long来保存可能溢出的结果,再与最大/最小整数相比较
    /**
     * @param n the integer to be reversed
     * @return the reversed integer
     */
    public int reverseInteger(int x) {
        long result = 0;
        int tmp = Math.abs(x);
        while (tmp > 0) {
            result *= 10;
            result += tmp % 10;
            if (result > Integer.MAX_VALUE) {
                return 0;
            }
            tmp /= 10;
        }
        return (int) (x >= 0 ? result : -result);
    }

思路
先将数字转化为字符串,然后将字符串倒序输出,并转回数字。记得需要去除首部多余的0。

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

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,352评论 0 33
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,963评论 18 399
  • 一、 1、请用Java写一个冒泡排序方法 【参考答案】 public static void Bubble(int...
    独云阅读 5,248评论 0 6
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    叶总韩阅读 10,537评论 0 41
  • 回溯算法 回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并...
    fredal阅读 14,692评论 0 89