leetcode(7)整数反转-python.java

整数反转,举例说明题意。123《-》321 ;120《-》21 ; -125《-》-521
这道题似乎不难,只需取余再乘变成高位。但陷阱在于,反转后可能会溢出。比如,-29~29-1的范围,325反转523,超出范围。所以,对于是否溢出要进行判断。
对于python取余,是向下取整数法。所以正负数取余结果不一样。比如-53%10=7(-6);而java中,-53%10=-3(-5)。对于python而言,只需要将负数转为正数计算即可。

int的范围是 -231 ~231-1,即of的范围

class Solution:
    def reverse(self, x: int) -> int:
        y , res = abs(x),0
        of = (1<<31)-1 if x>0 else 1<<31  #根据x的正负判断上限范围
        while y!=0:
            res = res*10 + y%10 #y%10即余数,每次取的都是最后一位再作为第一位
            if res > of:#如果超范围即溢出
                return 0
            y //=10 #y//=10 将y的最后一位删除,变成n-1位数
        return res if x>0 else -res
class Solution { 
   public int reverse(int x) {
	int res=0;
	int of = ((1<<31)-1)/10;
	while(x !=0){	  
	    if (Math.abs(res)>(1<<31)-1)/10)
	    	return 0;
	    res =res*10 +x%10;
	    x/=10;
	}
	return res;    
   }
}

你可能感兴趣的:(leetcode(7)整数反转-python.java)