5-整数反转Reverse Integer
题目
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123 输出: 321
示例 2:
输入: -123 输出: -321
示例 3:
输入: 120 输出: 21 注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−$2^{31}$, $2^{31}$ − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
解答
先转成字符串,通过array反转
- 如果是正数,就反转 
- 如果是负数,就拆了负号,反转,再按回负号 
- 提交前判断溢出的情况 
作者:cuidingfeng 链接:https://leetcode-cn.com/problems/two-sum/solution/jszheng-shu-fan-zhuan-by-cuidingfeng/
var reverse = function(x) {
  let sign = "",
    result;
  if (x < 0) {
    sign = "-";
    x = -x;
  }
  result = x
    .toString()
    .split("")
    .reverse()
    .join("");
  if (
    result.length > 10 ||
    (result.length === 10 && result > (x < 0 ? "2147483648" : "2147483647"))
  ) {
    return 0;
  } else {
    return sign + result;
  }
};Runtime: 68 ms, faster than 94.53% of JavaScript online submissions for Reverse Integer.
Memory Usage: 35.9 MB, less than 45.88% of JavaScript online submissions forReverse Integer.
直接操作数字反转
探险过程
题目意思是,给一串数字,按位反着输出,如果在 [−$2^{31}$, $2^{31}$ − 1]之外,就输出0。 那么数字怎么反着输出呢? 记得数组有反转的方法:.reverse() 所以思路是:数字转数组,数组反一下,再转回数字。 不过number[]转回数字好像不太方便,因此就用字符串过渡一下。
var reverse = function(x) {
  let sign = "";
  if (x < 0) {
    sign = "-";
    x = -x;
  }
  const reverse = x
    .toString()
    .split("")
    .reverse()
    .join("");
  if (reverse > (x > 0 ? 2147483647 : 2147483648)) {
    return 0;
  }
  return parseInt(sign + reverse, 10);
};Runtime: 80 ms, faster than 68.53% of JavaScript online submissions forReverse Integer.
Memory Usage: 36 MB, less than 36.74% of JavaScript online submissions for Reverse Integer.
想办法优化一下? if判断的时候可以没必要直接计算reverse的值,可以先判断长度。
- 长度长于10,必然溢出 
- 长度等于10,再上判断 
...
    if (
    result.length > 10 ||
    (result.length === 10 && result > (x < 0 ? "2147483648" : "2147483647"))
  ) {}
...测试代码
const reverse_test = () => {
  for (let index = 0; index < testData.length; index++) {
    const test = testData[index];
    const ans = parseInt(reverse(test.nums), 10); 
    // 用parseInt把字符串转number,最好要加个后缀
    ensure(ans, test.ans, "reverse" + index);
  }
};Last updated
Was this helpful?