现有算法中涉及到整数处理的,一般是反转或者和字符串进行转换,反转一般是用%取余获取最后一位,用/取整舍去最后一位,再将取余得到的数不断乘以10就可以啦
class Solution {
public boolean isPalindrome(int x) {
if (x < 0) {
return false;
}
int temp = x;
int res = 0;
while (temp > 0) {
res = res * 10 + temp % 10;
temp /= 10;
}
return x == res;
}
}
上面的解法,解决不了内存溢出的问题,下面这种只算一半的方法,可以避免这个问题,但没那么好理解
class Solution {
public boolean isPalindrome(int x) {
if (x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
int res = 0;
while (x > res) {
res = res * 10 + x % 10;
x /= 10;
}
// 分别处理1221和121两种情况
return x == res || x == res / 10;
}
}
网友评论