题目:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true
解题思路一:将之转换成字符串
代码
class Solution {
public boolean isPalindrome(int x) {
if (x < 0) {
return false;
}
String str = Integer.toString(x);
int i = 0;
int j = str.length() - 1;
while (i < j) {
if (str.charAt(i++) == str.charAt(j--)) {
continue;
} else {
return false;
}
}
return true;
}
}
解题思路二:进行整数的反转,但是考虑到全部反转的话可能会导致整数的溢出,所以这里考虑只反转整数长度的一半。而如何知道已经反转到整数长度的一半呢?我们假设x是初始整数,r为反转得到的整数,什么时候原始整数小于反转过的整数,证明已经过半。
代码
class Solution {
public boolean isPalindrome(int x) {
if (x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
int reverseNum = 0;
while (x > reverseNum) {
reverseNum = reverseNum * 10 + x % 10;
x /= 10;
}
if (x == reverseNum || x == reverseNum / 10) {
return true;
}
return false;
}
}