思路:每次提取头尾两个数,判断它们是否相等,判断后去掉头尾两个数
代码:
class Solution {
public boolean isPalindrome(int x) {
if(x < 0)//如果是负数就直接是false
return false;
int len = 1;
while(x / len >= 10)
len *= 10;//找到数x最高位所在的位数,例如数为1221时,len=1000,因为最高位1是在千位上。
while(x > 0) {
//get the head and tail number
int left = x / len;//取数x的最高位数字
int right = x % 10;//取数x的最底位数字
if(left != right)
return false;
else {
//remove the head and tail number
x = (x % len) / 10;//如果最高位数字和最低位数字相等,就去掉,然后x=22
len /= 100;//len也就相应的去掉两位,即由1000变到10
}
}
return true;
}
}
public class IsPalindrome {
public static void main(String[] args) {
Solution s=new Solution();
System.out.println(s.isPalindrome(1221));
}
}
运行结果:
true