LeetCode第7题---整数反转

                                  LeetCode第7题---整数反转


题目描述:

 

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:

输入: 123
输出: 321
 示例 2:

输入: -123
输出: -321
示例 3:

输入: 120
输出: 21
注意:

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

想法:

反转一个整数,只需要将x取余,然后x除以10,直到最后x/10==0就可以了。

例如:

123

res=0

x取余等于3    res=res*10+3=3     x=123/10=12

x取余等于2    res=res*10+2=32    x=12/10=1

x取余等于1    res=res*10+1=321    x=1/10=0(算法停止)

代码:

class Solution {
	/**
	 * 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
	 * @param x
	 * @return
	 */
    public int reverse(int x) {

    	//记录结果
    	int res=0;
    		
    	/*
    	 * 循环体,反转一个数据,用除法和取余便能实现
    	 */
    	while(x!=0){
    		
           
            //题目里说了,计算机只能存下32位的数据
            if (res > Integer.MAX_VALUE / 10  || (res == Integer.MAX_VALUE / 10 && x > 7)) 
                return 0;
            if (res < Integer.MIN_VALUE / 10 || (res == Integer.MIN_VALUE / 10 && x < -8)) 
                return 0;


            res = res * 10 + x % 10;
            x /= 10;
    	}
    	
        	return res;
  	
    }
}

 

总结:

学习了整数反转的方法,在判断溢出时花费了太多时间。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值