第一种方法:
public class Demo{
public static void main(String[] args) {
int x = 0;
System.out.println(isPalindrome(x));
}
public static boolean isPalindrome(int x) {
String s = Integer.toString(x);
String s1 = new StringBuffer(s).reverse().toString();
if(s.equals(s1))
return true;
return false;
}
}
第二种方法:
class Solution {
public boolean isPalindrome(int x) {
String tempX =String.valueOf(x);
if(x < 0){
return false;
}else if(x > 0){
int i=0;
int j=tempX.length()-1;
if(i == j){
return true;
}
while(i!=j){
if(i==j+1){
break;
}else if(tempX.charAt(i)==tempX.charAt(j)){
i++;
j–;
}else{
break;
}
}
if(i==j||i>j){
return true;
}else{
return false;
}
}else{
return true;
}
}
}
第三种方法:
class Solution {
public boolean isPalindrome(int x) {
if(x<0){
return false;
}
int d=1;
while(x/d>=10) d*=10;
while(x>0){
int q = x/d;//得到最高位
int r = x%10;//得到最低位
if(q!=r) return false;
x=x%d/10;//得到除去最高和最低
d/=100;//每次去掉两位,那个这个高的也去掉两个0,然后进行下一次计算
}
return true;
}
}
第四种方法:
算法:
首先,我们应该处理一些临界情况。所有负数都不可能是回文,例如:-123 不是回文,因为 - 不等于 3。所以我们可以对所有负数返回 false。
现在,让我们来考虑如何反转后半部分的数字。 对于数字 1221,如果执行 1221 % 10,我们将得到最后一位数字 1,要得到倒数第二位数字,我们可以先通过除以 10 把最后一位数字从 1221 中移除,1221 / 10 = 122,再求出上一步结果除以10的余数,122 % 10 = 2,就可以得到倒数第二位数字。如果我们把最后一位数字乘以10,再加上倒数第二位数字,1 * 10 + 2 = 12,就得到了我们想要的反转后的数字。 如果继续这个过程,我们将得到更多位数的反转数字。
public class Solution {
public bool IsPalindrome(int x) {
// 特殊情况:
// 如上所述,当 x < 0 时,x 不是回文数。
// 同样地,如果数字的最后一位是 0,为了使该数字为回文,
// 则其第一位数字也应该是 0
// 只有 0 满足这一属性
if(x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
int revertedNumber = 0;
while(x > revertedNumber) {
revertedNumber = revertedNumber * 10 + x % 10;
x /= 10;
}
// 当数字长度为奇数时,我们可以通过 revertedNumber/10 去除处于中位的数字。
// 例如,当输入为 12321 时,在 while 循环的末尾我们可以得到 x = 12,revertedNumber = 123,
// 由于处于中位的数字不影响回文(它总是与自己相等),所以我们可以简单地将其去除。
return x == revertedNumber || x == revertedNumber/10;
}
}