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

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


方法一、 翻转字符串方法

如果将数字看成是有符号位的字符串,那么我们就能够通过使用 JS 提供的字符串方法来实现非符 号部分的翻转,又因为整数的翻转并不影响符号,所以我们最后补充符号,完成算法。

  1. 首先设置边界极值;
  2. 使用字符串的翻转函数进行主逻辑;
  3. 补充符号
  4. 然后拼接最终结果

翻转整数算法


复杂度分析

翻转整数算法


方法二 、类似 欧几里得算法 求解

我们借鉴欧几里得求最大公约数的方法来解题。符号的处理逻辑同方法一,这里我们通过模 10 取 到最低位,然后又通过乘 10 将最低位迭代到最高位,完成翻转。

  1. 设置边界极值;
  2. 取给定数值的绝对值,遍历循环生成每一位数字,借鉴欧几里得算法,从 num 的最后一位开
    始取值拼成新的数
  3. 同步剔除掉被消费的部分
  4. 如果最终结果为异常值,则直接返回 0;如果原本数据为负数,则对最终结果取反
  5. 返回最终结果

翻转整数算法

复杂度分析

翻转整数算法

相关文章: