Sitelet https://github.com/MagicalBridge/Blog/issues/24
Skip to content

[LeetCode] 7. 整数反转(reverse-integer) #24

Description

@MagicalBridge

[7] 整数反转

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例  1:

输入: 123
输出: 321

示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

注意:

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为  [−2^31,  2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回
0。

解法一: 使用绝对值+数组的pop方法,将变为数字变成字符串然后翻转。
pop() 方法会删除并返回数组的最后一个元素,并且会改变数组的长度, 如果数组为空的时候返回undefined。

里面的for循环就是巧妙的运用了这个特性,初始化的时候numberToArray长度是3,然后每调用一次pop方法 长度减少1
直到长度为零,i < numberToArray.length 条件不满足,退出循环。

/**
  @param {number} x
  @return {number}
*/
var reverse = function(x) {
  // 转数组
  let numberToArray = String(Math.abs(x)).split("");
  // 转字符串
  let result = "";
  for (const i = 0; i < numberToArray.length; ) {
    result += numberToArray.pop();
  }
  
  result = x > 0 ? Number(result) : -Number(result);

  // 超 [-Math.pow(2,31),Math.pow(2,31)-1] // 判断
  if (result > Math.pow(2, 31) - 1 || result < -Math.pow(2, 31)) {
    result = 0;
  }
  return result;
};

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions