给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
我的解法:
class Solution {
public boolean isPalindrome(int x) {
int n = 0;
int y = x;
if(x < 0){
return false;
}
while(y != 0){
n = n * 10 + y % 10;
y = y / 10;
}
return n == x;
}
}
一开始我的思路是将这个整数反转来判断,但是可能会发展内存溢出,但是一旦发生内存溢出那就一定不是回文数!因此这个判断方法可以使用!
学习完优秀解法的改良方法:
class Solution {
public boolean isPalindrome(int x) {
int n = 0;
if(x < 0 || (x%10 == 0 && x!=0)){
return false;
}
while(x > n){
n = n * 10 + x% 10;
x = x / 10;
}
return x == n || x== n/10 ;
}
}
如果x位负数或者是10的倍数 那它一定不是回文数,接下来再将x分成两半:若x的位数位偶数,则前后各一半直接判断,若x为奇数,那就需要将位数多的一半稍加处理即可!