力扣:探索初级算法——字符串篇——整数反转

题目:整数反转

在这里插入图片描述

代码

优先参考思路
官方题解

(C语言)
    int reverse(int x){
    
        int rev = 0;
        while (x != 0) {
            int pop = x % 10;   //pop一开始指的是个位数
            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;
}

参考链接:https://leetcode-cn.com/problems/reverse-integer/solution/hua-jie-suan-fa-7-zheng-shu-fan-zhuan-by-guanpengc/

例子1:

假设范围是:-200~199 , X = 123.
INT_MAX/10 = 199/10 = 19
INT_MIN/10 = -200 = -20
if语句中的条件 pop > 7 ————— 应该改为 pop > 9
pop < -8 ———————— 应该改为 pop < 0
第一轮循环:rev=0 ,pop=3,X=12 , rev = 0 + pop = 3
第二轮:pop=12%10= 2,X=12/10= 1, rev=3*10+pop= 32
32>19 直接溢出return 0;

例子2:此图转载于该链接:画解算法:7. 整数反转
在这里插入图片描述

心得:自己举个例子,一句句在草稿上代入运行下。也可记录一个简单的例子,之后看代码看着着这个例子就可以知道每行代码的作用。就像数据库说起关系,脑中就浮现出学生课程表的例子一样,这些对我来说都让我更好理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值