回文数:正着念反着念一样,例如:12321的回文数是12321,所以12321就是回文数
public class Test1_Palindrome {
public static void main(String[] args) {
//判断是否是回文数,正着反着一样
System.out.println(isPalindrome(123456)); //false
// System.out.println(isPalindrome(12321));//true
// System.out.println(isPalindrome(120)); //false
// System.out.println(isPalindrome(12)); //false
// System.out.println(isPalindrome(1)); //true
//1-1000的回文数
// for (int i = 0; i <=1000; i++) {
// if (isPalindrome(i)){
// System.out.println(i);
// }
// }
}
public static boolean isPalindrome(int n){
//数据校验
//最后一位为0,肯定不是回文
//负数都不是回文
if(n<0 || n % 10 == 0){
return false;
}
//折半获取后半段的倒序内容
//temp用来保存后半段的内容
int temp = 0;
//n>temp:原数大于倒叙数
while (n > temp){
//比如(123456)第一次temp=0*10+6=6,n=12345
// 第二次 temp=6*10+5=65,n=1234
// 第三次 temp=65*10+4=654,n=123
//temp记录倒叙内容
temp = n % 10 + temp * 10;
//修改原始数据,截取掉最后一位
n /= 10;
//System.out.println(String.format("temp=%d, n=%d",temp, n));
//temp=6, n=12345
//temp=65, n=1234
//temp=654, n=123
}
//判断是否是回文, 偶数个 || 奇数个
//回文:要不前后相等(偶数个),要不奇数个去掉temp的最后一位和n相等,则返回
//回文:其中一个成立就是回文
return temp == n || temp / 10 == n;
}
}