7. 整数反转

思路

把数字转成数组, 再用数组的reverse()反转, 最后判断正负号,并且值在范围内即可

  1. var reverse = function (x) {
  2. let res = 0
  3. let arr = x.toString().split('')
  4. if (arr[0] == '-') {
  5. arr.shift()
  6. res = Number('-' + arr.reverse().join(""))
  7. } else {
  8. res = Number(arr.reverse().join(""))
  9. }
  10. if (Math.pow(-2, 31) > res || res > (Math.pow(2, 31) - 1)) return 0
  11. return res
  12. }

优化思路

上述代码if()太影响读性了,并省去x=0这种情况

  1. var reverse2 = function (x) {
  2. const minus = `${x}`.includes('-');
  3. let res = minus ? `${x}`.slice(1) : `${x}`;
  4. res = res.split("").reverse().join("");
  5. if (minus) { res *= -1 }
  6. if (Math.pow(-2, 31) > res || res > (Math.pow(2, 31) - 1)) return 0
  7. return res;
  8. };

稍微好读了那么一点点,时间花费差不多, 其实区别就在于判断符号的时机不一样,但是这3步是必须要的

  • 判断符号
  • 反转数字
  • 判断区间