反轉數字
反轉數字,如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;
}