题目描述:给定一个数字,如果这个数字是回文,返回true,否则返回false。
这里面有几个点需要注意:
1 负数一定不是回文,因为是以-开头的。
2 10以下的整数都是回文。
3 能被10整除的数字都不是回文,因为这些数字结尾都是0,开头一定不是0。
排除这三个条件,就直接按照回文的逻辑,拆分数字做判断就好。
代码如下:
class Solution {
public boolean isPalindrome(int x) {
//对特殊情况进行处理
if(x<0) return false;
if(x<10) return true;
if(x%10==0) return false;
int y=0;
//开始拆分x,边界条件是x拆分到一半的位置
while(y < x){
//把x的值,从后往前倒装
y=y*10 + x%10;
//按照回文的逻辑,来判断x和y的关系
if(y == x || y == x/10){
return true;
}
//x向右移动一个位置,为下一次倒装做准备
x=x/10;
}
return false;
}
}
运行结果: Runtime: 13 ms, faster than 58.33% of Java online submissions for Palindrome Number.
Memory Usage: 44 MB, less than 22.80% of Java online submissions for Palindrome Number.