3.判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 true : 输入: -121 false

第一种方法:
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;
}

}

你可能感兴趣的:(3.判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 true : 输入: -121 false)