整数反转

解题思路:

  1. 对 x 不断对 10 取余,然后除 10,直到为 0 即可;

  2. 每次计算出新的 result 前要注意判定边界条件,不满足就提前返回了;

  3. 最后在上面的过程中,不断对 result 先乘10后,再加 x 跟 10 的余数;

复杂度:

  1. 时间复杂度:O(log∣x∣),翻转的次数即 x 十进制的位数;

  2. 空间复杂度:O(1);

代码实现:

function reverse(x: number): number {
  let res = 0;

  // x 不断左移,最后一定是 0
  while (x) {
    //每次取末尾数字
    let tmp = x % 10;

    //判断是否 大于 最大32位整数(最大32位数字为 2147483647)
    if (res > 214748364 || (res === 214748364 && tmp > 7)) {
      return 0;
    }
    //判断是否 小于 最小32位整数(最小32位数字为 -2147483648)
    if (res < -214748364 || (res === -214748364 && tmp < -8)) {
      return 0;
    }

    res = res * 10 + tmp;
    x = ~~(x / 10);
  }

  return res;
}
打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 整数反转
  2. 2. 解题思路:
  3. 3. 复杂度:
  4. 4. 代码实现: