题目:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
方法一:
将数字本身反转,然后将反转后的数字与原始数字进行比较,如果它们是相同的,那么这个数字就是回文。
class Solution {
public boolean isPalindrome(int x) {
int reverse=0;
int num=x;
if(num<0){
return false;
}
while(num!=0){
reverse=reverse*10+num%10;
num/=10;
}
return x==reverse;
}
}
方法二:
将数字转换为字符串,并检查字符串是否为回文
class Solution {
public boolean isPalindrome(int x) {
String str=new StringBuffer(x+" ").reverse().toString();
return (" "+x).equals(str);
}
}
方法三:
取出后半段数字进行翻转,如果后半段和前半段相等或者除10后相等则为回文数字
class Solution {
public boolean isPalindrome(int x) {
int reverse=0;
if(x<0||x%10==0&&x!=0){
return false;
}
while(x>reverse){
reverse=reverse*10+x%10;
x=x/10;
}
return x==reverse||x==reverse/10;
}
}
方法四:
通过取整和取余操作获取整数中对应的数字进行比较。
举个例子:1221 这个数字。
通过计算 1221 / 1000, 得首位1
通过计算 1221 % 10, 可得末位 1
进行比较
再将 22 取出来继续比较
class Solution {
public boolean isPalindrome(int x) {
if (x < 0)
return false;
int div = 1;
while (x / div >= 10)
div *= 10;
while (x>0) {
int left = x / div;
int right = x % 10;
if (left != right)
return false;
x = (x % div) / 10;
div /= 100;
}
return true;
}
}