LeetCode题解 #9 Palindrome Number

题目大意:给定一个整型(即int),判断其是否为回文数

首先负数肯定不是回文了,只要判断正数就好。

将数字不断%10/10一个个取出来,放到一个数组中。然后再从数组两头开始往中间比较,有不等的马上返回false就好。

public static boolean isPalindrome(int x) {

if(x<0)
return false;




int [] data = new int [13];
int count = 0;

int temp = 0;

while(x>0){

data[count]=x%10;
x/=10;
count++;


}


for(int i=0,j=count-1;i<j;i++,j--){

if(data[i]!=data[j])
return false;


}





return true;

}

改进办法,在做成数组的时候,最后还要从两头往中间遍历,虽然int的位数不长,但是毕竟还是O(n)

所以不用数组了,直接构造从右边开始构造一个数,然后直接比较就好了。

bool isPalindrome(int x) {

// 负数肯定不为回文数

if (x < 0) return false;

// 将其反过来存放

long y = 0, z = x;

while (x > 0) { y = y * 10 + x % 10; x = x / 10; }

// 返回判断结果

return y == z;

}

原文地址:https://www.cnblogs.com/wzben/p/5017998.html