返回轨道
算法 · 2026-05-14 · 17 阅读

P162 反转整数

算法 17 阅读

信号摘要

难度:Easy · 时长:10:13 · leetcode 7 · lintcode 413

P162 反转整数

未对外公开播放权限
点击查看说明

描述

这个题目说的是,给你一个 32 位的整数,你要反转它每一个十进制位上的数字。对于负数,我们只反转数字部分,负号仍然放在最前面。另外,反转后如果有前缀 0,则要去掉。

注意,反转后的数字如果溢出,无法使用一个 32 位的整数表示,则返回 0。

比如说,给你的整数是 124,反转后的结果为 421:

x = 124, reverse(x) => 421

再比如说,给你的整数是 -42,反转后的结果为 -24

x = -42, reverse(x) => -24

负号不需要反转,仍然放在最前面。最后,如果给你的整数是 420,返回后的结果为 24:

x = 420, reverse(x) => 24

反转后要去掉前缀 0,只剩下 24。

代码

public class AlgoCasts {

  // Time: O(k), Space: O(1)
  public int reverseWithLong(int x) {
    int max = Integer.MAX_VALUE;
    int min = Integer.MIN_VALUE;
    long y = 0;
    while (x != 0) {
      y = y * 10 + x % 10;
      x /= 10;
      if (y > max || y < min) return 0;
    }
    return (int) y;
  }

  // Time: O(k), Space: O(1)
  public int reverseWithoutLong(int x) {
    int max = Integer.MAX_VALUE / 10;
    int min = Integer.MIN_VALUE / 10;
    int y = 0;
    while (x != 0) {
      if (y > max || y < min) return 0;
      y = y * 10 + x % 10;
      x /= 10;
    }
    return y;
  }

}

📡 通讯频道