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


### 题目描述 题目:**反转整数** 给定一个整数 `x`,返回它的反转后的整数。如果反转后的整数溢出(即,反转后整数超出了 32 位整数的范围),则返回 0。 **示例 1**: ``` 输入: x = 123 输出: 321 ``` **示例 2**: ``` 输入: x = -123 输出: -321 ``` **示例 3**: ``` 输入: x = 120 输出: 21 ``` **注意**: - 假设我们的环境只能存储 32 位整数,那么其数值范围为 `[−2^31, 2^31 − 1]`。如果反转后的整数超出了这个范围,则返回 0。 ### PHP 代码示例 ```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 代码示例 ```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 代码示例 ```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 ``` **码小课**网站中有更多相关内容分享给大家学习,包括算法详解、面试技巧等,欢迎访问。
推荐面试题