TA的每日心情 | 郁闷 前天 10:01 |
---|
签到天数: 32 天 [LV.5]常住居民I
注册会员

- 积分
- 62
|
一、问题理解需要将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位整数存储中间结果
来源:力扣第7题:从零理解整数反转
|
|