LeetCode热题(JS版)- 7. 反转整数

81 阅读1分钟

题目

给定一个 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;
}

image.png