9. 回文数(简单)
给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数
是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121
是回文,而 123
不是
题解1:最先能想到的解法当然是将整数转化成字符串,然后遍历分别从两端取数进行判断
class Solution {
public boolean isPalindrome(int x) {
String number=String.valueOf(x);
char[] arr=number.toCharArray();
int mid=arr.length/2;
for(int i=0;i< mid;i++){
if(arr[i]!=arr[arr.length-1-i]){
return false;
}
}
return true;
}
}
如果不让转化成字符串处理也可以将数字拆解到集合里,即
题解2:
public boolean isPalindrome(int x) {
if(x<0){
return false;
}
List<Integer> numberList=new ArrayList<>();
int temp=x;
int div=x;
while(div!=0){
temp=div%10;
numberList.add(temp);
div=div/10;
}
int mid=numberList.size()/2;
for(int i=0;i<mid;i++){
if(numberList.get(i) != numberList.get(numberList.size()-1-i)){
return false;
}
}
return true;
}
其实还有一种更巧妙的办法,回文数的特性是将数颠倒后还等于原数,那么我们可以在循环里直接计算出颠倒数,判断颠倒数是否等于原数即可
题解3:
public static boolean isPalindrome(int x) {
if(x<0){
return false;
}
int div=x;
int revNumber=0;
while(div!=0){
revNumber=revNumber*10+div%10;
div=div/10;
}
return x==revNumber;
}