判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
package day01;
public class Palindrome {
public static void main(String[] args) {
int x = 18;
//测试
//boolean ans = isPalindrome(x);
//测试
boolean ans = isPalindrome02(x);
System.out.println(ans);
}
//判断一个数是否是回文数
//如 121 从左往右读和从右往左读都是一样的121
//但-121、10d等都不是
public static boolean isPalindrome(int x) {
if(x < 0){
return false;
}
if(x >= 0 && x < 10){
return true;
}
String str = Integer.toString(x);
int i = 0;
int j = str.length() - 1;
while (i < j){
if(str.charAt(i) == str.charAt(j)){
i ++;
j --;
} else {
return false;
}
}
return true;
}
//不能使用字符串
//思路:反转一半的数字,然后比较
public static boolean isPalindrome02(int x){
//所有负数和 个位为0的且不等于0 的都不可能是回文数
if(x < 0 || (x % 10 == 0 && x != 0)){
return false;
}
//0 - 9
if(x >= 0 && x < 10){
return true;
}
//反转一半的数字
int reverse = 0;
while ( x < reverse ){
reverse = reverse * 10 + x % 10;
x /= 10;
}
//如:奇数位数 如:12321,最后x = 12, reverse = 123, 偶数位数如:1221, x = 12, reverse = 12
return reverse == x || reverse / 10 == x;
}
}