9. 回文数
题目
题解
小于 0 肯定不满足条件 大于 0 且尾数为 0,则不满足条件
题解一:
直接转换成字符串,然后 reverse 比较一下。但是题目中有写:
进阶:你能不将整数转为字符串来解决这个问题吗?
所以肯定不能使用这种方式!
class Solution {
public boolean isPalindrome(int x) {
if (x < 0 || (x > 0 && x % 10 ==0)) {
return false;
}
StringBuilder sb = new StringBuilder(String.valueOf(x));
return sb.toString().equals(sb.reverse().toString());
}
}
题解二:
对数字进行反转
class Solution {
public boolean isPalindrome(int x) {
if (x < 0 || (x > 0 && x % 10 ==0)) {
return false;
}
int res = 0;
int tmp = x;
while (tmp != 0) {
int i = tmp % 10;
res = res * 10 + i;
tmp = tmp / 10;
}
return res == x;
}
}
题解三:
既然是回文数,那就反转一半的数字即可 如何知道反转到一半了 tmp 不断减少位数,当 tmp 小于 res 时,说明反转到一半或者一半过一位了 总位数可能是奇数或者偶数,做一下兼容
class Solution {
public boolean isPalindrome(int x) {
if (x < 0 || (x > 0 && x % 10 == 0)) {
return false;
}
int res = 0;
int tmp = x;
while (tmp > res) {
res = res * 10 + tmp % 10;
tmp = tmp / 10;
}
return tmp == res || tmp == res / 10;
}
}
-
评论