顺接reverse integer的思路,来解答很容易:
1,把后半部进行reverse,新数不断增加,旧数不断减小,如果是回文,有奇数长度和偶数长度两种,奇数的话 新数最后退出循环会多一位,偶数的话新旧两数相等。
2,唯一关键的点是!!!以0结尾但不是零的数,要特殊的考虑的。
3,负数不用考虑,问清楚面试官即可。
前面有到 longest palindromic substring的题,回味一下,对比这道题:string的话就是左右延伸挨个字母对比,需要一个helper function。这里的话就是因为数字的合成然后直接有=操作判断符号,所以策略不一样,数字就是前后两半拆分重组数字再对比即可。
80%, easy case,代码:
public class Solution {
public boolean isPalindrome(int x) {
if(x==0) return true;
if(x%10==0) return false;
int half=0;
while(half<x){
int digit = x%10;
half=half*10+digit;
x/=10;
}
return (half==x || x==(half/10));
}
}