描述:
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。
分析:
第一:
很明显小于零的数一定不是回文数,然后将数据转化为字符串进行翻转(reverse) ,比较两个字符串是否相同即可。
public static boolean isPalindrome(int x) {
if (x < 0) {
return false;
}
StringBuffer xString = new StringBuffer(String.valueOf(x));
return xString.reverse().toString().compareTo(String.valueOf(x)) == 0;
}
第二:
从个数逐个获取然后重新拼接,最后判断两个数是否相等
public static boolean isPalindrome(int x) {
if (x < 0) {
return false;
}
int i = 0;
int origin = x;
while (x > 0) {
int single = x % 10;
i = 10 * i + single;
x = x / 10;
}
return i == origin;
}
第三:
这道题的本质就是就是一个从头遍历 另一个从尾部遍历,然后判断遍历过的数据组成的数据是否
相等即可。那么就存在两种情况 偶数位,两个数相等,奇数位,新组成的数 /10 = 原来的数字
public static boolean isPalindrome(int x) {
if (x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
int i = 0;
while (x > i) {
int single = x % 10;
i = 10 * i + single;
x = x / 10;
}
return i == x || x== i/10;
}