7、整数反转

  1. 示例 1:
  2. 示例 2:
  3. 示例 3:
  • 题解
    1. 1、防止溢出即可
  • 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

    示例 1:

    输入: 123
    输出: 321
    

    示例 2:

    输入: -123
    输出: -321
    

    示例 3:

    输入: 120
    输出: 21
    

    注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 $[−2^{31},  2^{31} − 1]$。请根据这个假设,如果反转后整数溢出那么就返回 0。

    题解

    1、防止溢出即可

    • 溢出归零
    public int reverse(int x) {
        int rev = 0;
        // 没有必要分正负来做
        while (x != 0) {
            int pop = x % 10;// 求个位数
            x /= 10;// 更新
            // 正数非法判断,如果结果大于最大数字的十分之一,则判断最后一位,是否大于7
            if (rev > Integer.MAX_VALUE/10 || (rev == Integer.MAX_VALUE / 10 && pop > 7)) return 0;
            // 负数非法判断,如果结果小于最大数字的十分之一,则判断最后一位,是否小于-8
            if (rev < Integer.MIN_VALUE/10 || (rev == Integer.MIN_VALUE / 10 && pop < -8)) return 0;
            // 更新结果
            rev = rev * 10 + pop;
        }
        return rev;
    }
    

    转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1056615746@qq.com

    💰

    Title:7、整数反转

    Count:274

    Author:攀登

    Created At:2020-07-26, 00:19:44

    Updated At:2024-06-15, 15:52:32

    Url:http://jiafeimao-gjf.github.io/2020/07/26/7%E3%80%81%E6%95%B4%E6%95%B0%E5%8F%8D%E8%BD%AC/

    Copyright: 'Attribution-non-commercial-shared in the same way 4.0' Reprint please keep the original link and author.

    ×

    Help us with donation