Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
Example 1:
Input: 121
Output: true
Example 2:
Input: -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Example 3:
Input: 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
Follow up:
Coud you solve it without converting the integer to a string?
自己的代码:
public static boolean isPalindrome(int x) {
if(x <0)
return false;
else if(x == 0) // 这句不可少,否则x=0,会爆数组越界异常;
return true;
int[] arr = new int[20]; // 辅助容器
int index = 0;
while(x > 0) {
arr[index++] = x % 10;
x /= 10;
}
for(int i=0;i<=index/2;i++) {
if(arr[i] != arr[index-i-1]) {
return false;
}
}
return true;
}
别人的代码1:
public boolean isPalindrome(int x) {
if (x<0 || (x!=0 && x%10==0))
return false;
int rev = 0;
while (x>rev){
rev = rev*10 + x%10;
x = x/10;
}
return (x==rev || x==rev/10);
}
核心:还是把整个数在左半部分和右半部分都取出来,比较是否相等
优点就是:没有使用任何辅助容器