LeetCode300题计划——6.整数反转

题目:
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。

class Solution6 {
	public int reverse(int x) {
		int res = 0;
		while (x != 0) {
			// 每次取末尾数字
			int tmp = x % 10;
			
			// 判断是否 大于 最大32位整数或者小于 最小32位整数,−2^31 ≤ rev⋅10+digit ≤ 2^31 − 1,化简后得到下面的判断条件
			
			// res==214748364 && tmp>7不需要判断最后一位是否大于7,或者res==-214748364 && tmp<-8小于-8
			// 因为要满足条件,他的首位只能是1或2,翻转过来末尾是1或2,一定小于7或者大于-8
			if (res < Integer.MIN_VALUE / 10 || res > Integer.MAX_VALUE / 10) {
                return 0;
            }
			
			// res就是反转后的结果,只要将每次的后面一位乘以10再加上新的一位
			res = res * 10 + tmp;
			// 每次x去掉一位数字
			x /= 10;
		}
		return res;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值