题目
给定一个 32 位有符号整数,将整数中的数字进行反转。
给定一个32 位有符号整数 x, 将整数 x 中的数字进行反转。如果超出范围 [-231, 231 - 1],则返回 0。
示例1:
输入: x = 123
输出: 321
示例2:
输入: x = -123
输出: -321
示例3:
输入: x = 120
输出: 21
解法1:用数组取出每位来逆序
- 先确定有几位以及符号
- 然后确定每位的值
- 然后数组反转
- 生成新的值后如果超出则返回0
function reverse(x: number): number {
const sign = Math.sign(x);
let _x = Math.abs(x);
const numbers = [];
while (_x) {
numbers.push(_x % 10);
_x = Math.floor(_x / 10);
}
const value = sign * numbers.reverse().reduce((sum, d, i) => sum + d * Math.pow(10, i), 0);
if (value < -Math.pow(2, 31) || value > Math.pow(2, 31) - 1) return 0;
return value;
}