- 打卡等级:即来则安
- 打卡总天数:15
- 打卡月天数:1
- 打卡总奖励:117
- 最近打卡:2025-08-02 15:29:27
VIP
- 积分
- 2388
|
一、问题理解需要将32位有符号整数的数字部分反转 反转后结果必须在[-2³¹, 2³¹-1]范围内 不能使用64位整数存储中间结果
二、算法思路通过除法(/)移除已处理的数字 逐步构建反转后的数字
三、关键点解析四、代码实现细节五、完整代码
- 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;
- }
- };
复制代码
C++
六、常见错误忽略负数情况 溢出检查不完整 使用64位整数存储中间结果
来源:力扣题解
|
|