LeetCode 7 整数反转 - 模运算取位

LeetCode 7 整数反转,数学题,模 10 取最后一位,唯一坑点是溢出判断。


🟡 整数反转

32 位有符号整数反转,溢出返回 0。123 → 321,-123 → -321,120 → 21


思路很直接:每次模 10 取个位数,加到结果末尾(res = res * 10 + digit),原数除以 10。关键在反转后的数可能超过 int 范围(比如 2147483647 反转过来就爆了),Java 里需要在溢出之前提前判断。

java 复制代码
public int reverse(int x) {
    int res = 0;
    while (x != 0) {
        int digit = x % 10;
        // 提前判断下次运算会不会溢出
        if (res > Integer.MAX_VALUE / 10 ||
           (res == Integer.MAX_VALUE / 10 && digit > 7)) return 0;
        if (res < Integer.MIN_VALUE / 10 ||
           (res == Integer.MIN_VALUE / 10 && digit < -8)) return 0;
        res = res * 10 + digit;
        x /= 10;
    }
    return res;
}

为什么是 7 和 -8?Integer.MAX_VALUE = 2147483647(个位是 7),MIN_VALUE = -2147483648(个位是 -8)。在 res*10 之前判断------如果 res 已经大于 MAX/10,乘 10 必定溢出。如果刚好等于 MAX/10,新的个位数 digit 不能超过 7。负数同理。


这道题你踩过什么坑?或者你用别的语言实现过吗?评论区聊聊,回头复习也方便翻。

相关推荐
東隅已逝,桑榆非晚23 分钟前
算法2. 双指针法-复写零
c++·笔记·学习·算法
云析赢指标公式网41 小时前
文华财经指标源码笔记:WINNER筹码函数、控盘变量与MACD变体的调试记录
java·笔记·算法
CC数分2 小时前
统计学基础|先把问题问对:数据分析的六大类型
大数据·人工智能·算法
文丑颜不良啊3 小时前
LeetCode1721~1740题目解析
java·leetcode
地平线开发者3 小时前
CLIP 的训练机制:从对比学习到图文对齐
深度学习·算法·自动驾驶
hetao17338373 小时前
2026-11-02 hetao1733837 的刷题记录
c++·算法
Geektec3 小时前
IMU 选型完全指南:从硬件参数到算法融合的系统工程视角
算法·imu·陀螺仪·加速度计·元器件选型
CQU_JIAKE4 小时前
11.2【A】
算法
文丑颜不良啊4 小时前
LeetCode1681~1700题目解析
java·leetcode
Godspeed Zhao4 小时前
从零开始学AI21——决策树
算法·决策树·机器学习