当前位置: 面试刷题>> 反转整数 (经典算法题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
```
**码小课**网站中有更多相关内容分享给大家学习,包括算法详解、面试技巧等,欢迎访问。