当前位置: 面试刷题>> 反转整数 (经典算法题500道)


题目描述

题目:反转整数

给定一个整数 x,返回它的反转后的整数。如果反转后的整数溢出(即,反转后整数超出了 32 位整数的范围),则返回 0。

示例 1:

输入: x = 123
输出: 321

示例 2:

输入: x = -123
输出: -321

示例 3:

输入: x = 120
输出: 21

注意:

  • 假设我们的环境只能存储 32 位整数,那么其数值范围为 [−2^31, 2^31 − 1]。如果反转后的整数超出了这个范围,则返回 0。

PHP 代码示例

function reverseInteger($x) {
    $result = 0;
    while ($x != 0) {
        $pop = $x % 10;
        $x = (int)($x / 10);

        // 检查反转后的数字是否超出范围
        if ($result > PHP_INT_MAX / 10 || ($result == PHP_INT_MAX / 10 && $pop > 7)) return 0;
        if ($result < PHP_INT_MIN / 10 || ($result == PHP_INT_MIN / 10 && $pop < -8)) return 0;

        $result = $result * 10 + $pop;
    }
    return $result;
}

// 测试示例
echo reverseInteger(123); // 输出: 321
echo "\n";
echo reverseInteger(-123); // 输出: -321
echo "\n";
echo reverseInteger(120); // 输出: 21

Python 代码示例

def reverseInteger(x):
    result = 0
    while x:
        pop = x % 10
        x //= 10

        # 检查反转后的数字是否超出范围
        if result > 2**31 - 1 // 10 or (result == 2**31 - 1 // 10 and pop > 7):
            return 0
        if result < -2**31 // 10 or (result == -2**31 // 10 and pop < -8):
            return 0

        result = result * 10 + pop

    return result

# 测试示例
print(reverseInteger(123))  # 输出: 321
print(reverseInteger(-123)) # 输出: -321
print(reverseInteger(120))  # 输出: 21

JavaScript 代码示例

function reverseInteger(x) {
    let result = 0;
    while (x !== 0) {
        const pop = x % 10;
        x = Math.floor(x / 10);

        // 检查反转后的数字是否超出范围
        if (result > Math.pow(2, 31) - 1 / 10 || (result === Math.pow(2, 31) - 1 / 10 && pop > 7)) return 0;
        if (result < -Math.pow(2, 31) / 10 || (result === -Math.pow(2, 31) / 10 && pop < -8)) return 0;

        result = result * 10 + pop;
    }
    return result;
}

// 测试示例
console.log(reverseInteger(123)); // 输出: 321
console.log(reverseInteger(-123)); // 输出: -321
console.log(reverseInteger(120)); // 输出: 21

码小课网站中有更多相关内容分享给大家学习,包括算法详解、面试技巧等,欢迎访问。

推荐面试题