Determine whether an integer is a palindrome. Do this without extra space.
第一种想到的是转化为数组,前后对比元素看是否相等。第二种是不开辟新的数组空间,进行数字的前后比较。其实还有一种就是反转该数字,看是不是相等(但是这种情况还得考虑溢出吧(其实如果溢出,那么一定不是回文串,如果是回文串,怎么可能溢出))
public class Solution {
public boolean isPalindrome(int x) {
String s=Integer.toString(x);
char[] a=s.toCharArray();
int len=a.length;
for(int i=0;i<len/2;++i){
if(a[i]!=a[len-1-i]) return false;
}
return true;
}
}
上边那个开辟了新的空间,下边的没有,纯粹就是考虑数学问题
public class Solution {
public boolean isPalindrome(int x) {
if(x<0) return false;
int count=0,z=x;
while(z!=0){
z/=10;
++count; //数一数有几个位数
}
while(x!=0){
int y=(int)Math.pow(10,count-1);
if(x%10!=x/y) return false;
x=(x%y)/10; //去掉最高位和最低位
count=count-2; //位数减去2
}
if(x!=0 && x<10 && count>1) return false; //对于100021这种的判断
return true;
}
}
别人的:http://www.programcreek.com/2013/02/leetcode-palindrome-number-java/,代码是
public class Solution {
public boolean isPalindrome(int x) {
//negative numbers are not palindrome
if (x < 0)
return false;
// initialize how many zeros
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;
}
}