自己的写法
class Solution {
public boolean isPalindrome(int x) {
if(x<0){
return false;
}
String a = Integer.toString(x);
String b = new StringBuilder(a).reverse().toString();
if(a.equals(b)){
return true;
}else{
return false;
}
}
}
优解
class Solution {
public boolean isPalindrome(int x) {
// 0 是回文数
if (x == 0) return true;
// 负数和除 0 以外以 0 结尾的数都不是回文数
if (x < 0 || x % 10 == 0) return false;
// 记录 x 后一半的翻转,如 x = 4334,reversed = 43;x = 54345,reversed = 54
int reversed = 0;
while (x > reversed) {
reversed = reversed * 10 + x % 10;
x /= 10;
}
// x有偶数位和奇数位两种情况
return reversed == x || reversed / 10 == x;
}
}
总结
有些题,其实只有考虑一半的情况就可以解决了,不用整个去算。注解已解释这段代码