一、问题理解
需要将32位有符号整数的数字部分反转
反转后结果必须在[-2³¹, 2³¹-1]范围内
不能使用64位整数存储中间结果
二、算法思路
使用模运算(%)获取数字的最后一位
通过除法(/)移除已处理的数字
逐步构建反转后的数字
三、关键点解析
四、代码实现细节
使用while循环处理所有数字位
通过INT_MAX/10和INT_MIN/10进行溢出预判
特殊处理最后一位数字(7和-8)
五、完整代码
class Solution {public: int reverse(int x) { int rev = 0; while (x != 0) { int pop = x % 10; // 获取最后一位数字 x /= 10; // 移除最后一位 // 检查是否溢出 if (rev > INT_MAX/10 || (rev == INT_MAX/10 && pop > 7)) return 0; if (rev < INT_MIN/10 || (rev == INT_MIN/10 && pop < -8)) return 0; rev = rev * 10 + pop; // 构建反转数字 } return rev; }};
六、常见错误
忽略负数情况
溢出检查不完整
使用64位整数存储中间结果
来源:力扣题解
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦