给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 用js完成
时间: 2024-03-23 14:38:16 浏览: 84
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果
好的,根据你的要求,我会用 JavaScript 来完成这个问题。
实现思路如下:
1. 将输入的数字转换成字符串,再将其转为数组,方便操作每一位数字。
2. 如果数字为负数,则先将其转为正数,操作完成后再转回负数。
3. 迭代数组,将首位与末位交换,以此类推,直到中间位置。
4. 将数组转为字符串,并转回数字,判断是否超出范围,超出则返回 0,否则返回反转后的数字。
代码如下:
```javascript
function reverse(x) {
const MAX_VALUE = Math.pow(2, 31) - 1;
const MIN_VALUE = -Math.pow(2, 31);
let arr = Math.abs(x).toString().split('');
let i = 0, j = arr.length - 1;
while (i < j) {
[arr[i], arr[j]] = [arr[j], arr[i]];
i++;
j--;
}
let result = Number(arr.join(''));
if (x < 0) {
result = -result;
}
if (result > MAX_VALUE || result < MIN_VALUE) {
return 0;
}
return result;
}
```
这样,问题就解决了。
阅读全文