将其转换为字符串,字符串翻转后相同则true
class Solution {
public boolean isPalindrome(int x) {
if (x < 0) return false;
if (x == 0) return true;
StringBuilder sb = new StringBuilder();
int temp = x;
while (temp != 0) {
sb.append(temp % 10);
temp /= 10;
}
String a = sb.toString();
String b = sb.reverse().toString();
return a.equals(b);
}
}
使用了额外的空间。
改进:比较x
的一半,注意特殊情况的判断(复数和个位为0
的数)
class Solution {
public boolean isPalindrome(int x) {
if (x < 0 || (x != 0 && x % 10 == 0) ) return false;
int newNumber = 0;
while (x > newNumber) {
newNumber = newNumber * 10 + x % 10;
x /= 10;
}
return x == newNumber || x == newNumber / 10;
}
}