用户输入一个32位以内的整数,判断该数是否为回文数
注意:负数也可以是回文
* 思路:
* 整数的最小负数不能转为正整数
* 取help和n相同位数
* 如果首位 (n / help) 与末位 (n % 10) 不相等返回false
* n去掉首位和末位 (n % help) / 10 继续循环直到n=0
源代码
package com.javakk.ex;
import java.util.Scanner;
/**
* @Time 2018年8月30日 上午9:07:15
* @Title { 判断回文数 }
* @Desc { 32位以内的整数,负数也可以回文 }
* @Email 92920@sohu.com
* @Author JavaKK
*/
public class Ex2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
System.out.println(isPallindrome(n));
}
/**
*
* 思路:
* 整数的最小负数不能转为正整数
* 取help和n相同位数
* 如果首位 (n / help) 与末位 (n % 10) 不相等返回false
* n去掉首位和末位 (n % help) / 10 继续循环直到n=0
*
* @param n
* @return
*/
private static boolean isPallindrome(int n) {
if (n == Integer.MIN_VALUE) {
return false;
}
n = Math.abs(n);
int help = 1;
while (n / help >= 10) {
help *= 10;
}
while (n != 0) {
if (n / help != n % 10) {
return false;
}
n = (n % help) / 10;
help /= 100;
}
return true;
}
}