反轉數字

反轉數字

反轉數字,如123 -> 321,-123 -> -321,120 -> 21。如果反轉的結果超過int的表示範圍,則返回0。

代碼如下:

public class ReverseInt {
    private static int reverse(int num) {
        long result = 0;
        for (; num != 0; num /= 10) {
            result = result * 10 + num % 10;
        }

        return result < Integer.MIN_VALUE || result > Integer.MAX_VALUE ? 0 : (int) result;
    }

    public static void main(String[] args) {
        System.out.println(reverse(123));
        System.out.println(reverse(321));
        System.out.println(reverse(125324));
        System.out.println(reverse(-23548));
        System.out.println(reverse(0));
        System.out.println(reverse(1200));
    }
}

擴展:

判斷一個數字是否是迴文數字?如1234321是迴文數,1234不是迴文數。

常規的操作:和上面的方法大體相同。但更優的一個解法是:

思路:若一個數是迴文數,只需要判斷前一半和後一半是否相等就行。

例如:

1234321						12344321
num      result				num      result
1234321  0					12344321	0
123432   1					1234432		1
12343    12					123443		12
1234     123				12344		123	
123      1234				1234		1234

經過上面的分析,可知,如果是數字個數是奇數,則判斷result / 10 == num,如果數字個數是偶數,則判斷result == num。

代碼如下:

private static boolean reverse2(int num) {
        long result = 0;
        while (num > result) {
            result = result * 10 + num % 10;
            num /= 10;
        }

        return result == num || result / 10 == num;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章