Reverse Integer
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
溢出不意味着ans_before<ans,溢出以后可能还是大于上次的数。
解法一:采用x=reverse(reverse(x)) 的技巧判断是否溢出:
public class Solution {//采用了reverse的reverse是数字本身的思想来防止溢出。特殊:0,10
    public int reverse(int x) {
        if(x==0)
        {
            return 0;
        }
        int temp=Math.abs(x);
        
        while(temp%10==0)
        {
            temp/=10;
        }
        if(temp!=reverse_num(reverse_num(temp)))
        {
            return 0;
        }
        if(x<0)
        {
            return -reverse_num(temp);
        }
        else return reverse_num(temp);
    }
    public int reverse_num(int x)
    {
        int ans=0;
        int temp=x;
        //boolean overflow=false;//溢出判定
        while(temp!=0)
        {
            ans=ans*10+(temp%10);
            temp/=10;
        }
        return ans;
    }
}
解法二:利用ans 和 Integer.MAX_VALUE/10 比较发现溢出。
public class Solution {//采用了ans和MAX_VALUE/10进行比较发现溢出。
    public int reverse(int x) {
        int ans=0;
        int temp=x;
        while(temp!=0)
        {
            if(Math.abs(ans)>(Integer.MAX_VALUE/10))
            {
                return 0;
            }
            ans=ans*10+(temp%10);
            temp/=10;
        }
        return ans;
    }
}
1. 负数和正数不用区别对待。
2. -ans表示ans的负数。

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号