LeetCode 7.整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231,231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。**数学证明由于不能存储64位整数不能直接对反转的数进行范围判断需要通过对不等式的拆分移项当x>0时,rev < MAX_VALUErev * 10 + digit &
·
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
**数学证明
由于不能存储64位整数
不能直接对反转的数进行范围判断
需要通过对不等式的拆分移项
当x>0时,
rev < MAX_VALUE
rev * 10 + digit < max / 10 * 10 + 7
(rev - max/10) * 10 < 7 - digit
当且仅当rev<max/10时,不等式成立
x<0同理
**
class Solution {
public int reverse(int x) {
int rev = 0;
while (x != 0) {
if (rev < Integer.MIN_VALUE / 10 || rev > Integer.MAX_VALUE / 10) {
return 0;
}
int digit = x % 10;
x /= 10;
rev = rev * 10 + digit;
}
return rev;
}
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)