整数反转
题目:
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
·通过循环将数字 x 的每一位拆开,在计算新值时每一步都判断是否溢出。
·溢出条件有两个,一个是大于整数最大值MAX_VALUE,另一个是小于整数最小值 MIN_VALUE,设当前计算结果为
ans,下一位为 pop。
·从 ans * 10 + pop > MAX_VALUE 这个溢出条件来看
!当出现 ans > MAX_VALUE / 10 且 还有pop需要添加时,则一定溢出
!当出现 ans == MAX_VALUE / 10 且 pop > 7 时,则一定溢出,7 是 2^31 - 1 的个位数
·从 ans * 10 + pop < MIN_VALUE 这个溢出条件来看
!当出现 ans < MIN_VALUE / 10 且 还有pop需要添加 时,则一定溢出
!当出现 ans == MIN_VALUE / 10 且 pop < -8 时,则一定溢出,8 是-2^31 的个位数
题解参考和视频解析:
链接:https://leetcode.cn/problems/reverse-integer/solutions/7429/hua-jie-suan-fa-7-zheng-shu-fan-zhuan-by-guanpengc/
来源:力扣(LeetCode)
代码:<