leetcode 6# 整数反转

86 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情

整数反转

题目

7. 整数反转

难度中等

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

 

示例 1:

输入: x = 123
输出: 321

示例 2:

输入: x = -123
输出: -321

示例 3:

输入: x = 120
输出: 21

示例 4:

输入: x = 0
输出: 0

数学解决

这题其实很简单啊,感觉难度不应该是中等,而是简单难度。思路很简单。

每次取出整数的最后一位放在结果整数的末尾即可,那么我们就可以两个主要步骤解决

取末尾: %10 运算符能够得到末尾的整数(负数也是带有符号的哦! -123 %10 =-3),需要注意的是我们要将这个数除以十来将末尾数改变,而js的/不是整除,所以我们再/之后还需要取整。

改变结果整数: 将结果数*10就将所有位迁移一个单位,空出个位,再加上新的末尾数就可以了。

function reverse(x: number): number {
  let n = x;
  let res = 0;
  while (n != 0) {
    let a = n % 10;
    n = ~~(n / 10); //n=parseInt(String(n / 10)) 也是一样的效果
    // 为什么不用floor应该不用多说,Math.floor(-12.3)结果为-13,不符合预期的-12 
    //这里的~~两次取反达到取整的效果
    res = res * 10 + a;
    //结果数乘十加末尾数

  }
  if (res > Math.pow(2, 31) - 1 || res < -Math.pow(2, 31)) {
  //判断结果数是否超出大小即可
    return 0;
  }
  return res;
}

总结

本次文章的难点在于取反思路和取整处理,都不难,好好思考就能得出结果。

结语

本次的文章到这里就结束啦!♥♥♥读者大大们认为写的不错的话点个赞再走哦 ♥♥♥

每天一个知识点,每天都在进步!♥♥