LeetCode - Reverse Integer

 

反转数字,考虑溢出的情况。直接返回零(好坑啊)。

public class Solution {
    public int reverse(int x) {
        if(x == 0)
            return 0;
        StringBuilder sb = new StringBuilder(Math.abs(x)+"");
        int flag = 1;
        if(x < 0)
            flag = -1;
        //System.out.println(sb);
            
        StringBuilder ans = new StringBuilder(sb.reverse());
        long anss = 0;
        for(int i=ans.length()-1; i>=0; i--) {
            anss += (long)(ans.charAt(i)-'0') * pow(10L, ans.length()-1-i);
        }
       // System.out.println(anss);
        if(anss > 2147483647L || (flag==-1 && anss > 2147483648L))  {
            return 0;
        }
        
        return (int) (anss * flag);
        
    }
    public long pow(long l, int m) {
        long ans = 1;
        for(int i=0; i<m; i++) {
            ans *= l;
        }
        //ans = Math.abs(ans);
        return ans;
    }
}

 

posted @ 2015-04-01 00:38  Pickle  阅读(160)  评论(0编辑  收藏  举报