登龙课程:LeetCode高级面试题 - 整数翻转
发布时间
阅读量:
阅读量
一、题目描述(@LeetCode)
提供一个 32 位的带符号整数,要求将该数值中各个位上的数字顺序进行调换。
示例 1:
- 输入: 123
- 输出: 321
示例 2:
- 输入: -123
- 输出: -321
示例 3:
- 输入: 120
- 输出: 21
若反转后所得数值超出 32 位整数的表示范围,则应返回数值零。
二、解题思路
通过运用取模与取整运算,可将各个位数进行分离,随后执行累加操作:
- 123 % 10 = 3:提取个位数字
- 123 / 10 = 12:去除个位数字
- 在完成数字反转前,需实施溢出检测
- INT_MAX 的数值为 2^31 - 1,即等于 2147483647
- INT_MIN 的数值为 -2^31,即 -2147483648
- 若 rec 大于等于 2147483647 / 10 = 214748364,则后续的 rec * 10 操作将导致溢出,例如数值为 2147483650 的情况
- 若 rec 等于 2147483647 / 10 = 214748364,并且 pop 数值大于7,则后续操作不会发生溢出
- 对于负数情况,处理方式与正数类似
数学方法应用
class Solution {
全部评论 (0)
还没有任何评论哟~
