Reverse Integer

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

click to show spoilers.

 

Subscribe to see which companies asked this question

package nine;

public class ReverseiInteger {
    public static int reverseInteger(int n) {
        boolean flag = false;
        if (n < 0) {
            n = -n;
            flag = true;
        }
        String s = n + "";
        char[] num = s.toCharArray();

        int len = num.length;
        for (int i = 0; i < len / 2; i++) {
            char tmp = num[i];
            num[i] = num[len - i - 1];
            num[len - i - 1] = tmp;
        }
        s = new String(num);
        try {
            if (flag) {
                return -Integer.parseInt(s);
            }
            return Integer.parseInt(s);
        } catch (Exception e) {
            return -1;
        }
    }

    public static int reverseIntegerBetter(int n) {
        double reverseNum = 0;
        boolean flag = false;
        if (n < 0) {
            n = -n;
            flag = true;
        }
        while (n > 0) {
            if (reverseNum > Integer.MAX_VALUE) {
                return 0;
            }
            if (n < 10) {
                reverseNum += n;
            } else {
                reverseNum = (reverseNum + (n % 10)) * 10;
            }
            n = n / 10;
        }
        if (flag) {
            reverseNum = -reverseNum;
        }
        return (int) reverseNum;
    }

    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        reverseInteger(-13);
        long end = System.currentTimeMillis();
        System.out.println(end - start);
        start = System.currentTimeMillis();
        System.out.println(reverseIntegerBetter(2147483412));
        end = System.currentTimeMillis();

    }
}

网上的优化版本

public int reverse(int x)
{
    int result = 0;

    while (x != 0)
    {
        int tail = x % 10;
        int newResult = result * 10 + tail;
        if ((newResult - tail) / 10 != result)
        { return 0; }
        result = newResult;
        x = x / 10;
    }

    return result;
}

 

posted @ 2016-01-05 18:11  程序猿进化之路  阅读(103)  评论(0)    收藏  举报