一、问题理解
需要将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位整数存储中间结果
来源:力扣题解
點擊查看更多內(nèi)容
為 TA 點贊
評論
評論
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦