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

题目:整数反转

力扣:探索初级算法——字符串篇——整数反转_第1张图片

代码

优先参考思路
官方题解

(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. 整数反转
力扣:探索初级算法——字符串篇——整数反转_第2张图片

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

你可能感兴趣的:(力扣刷题笔记)