输入: -121 输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
输入: 10 输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
class Solution {
public boolean isPalindrome(int x) {
// 临界情况处理
// 1. 负数一定不是回文数
if (x<0) return false;
// 2. 大于0且个位数为0的数一定不是回文数
if (x>0 && x%10==0) return false;
// 对后半部分的数字进行反转,反转后得到的数字为xr
// 循环结束条件:x <= xr
int xr = 0;
while (x > xr) {
// 取x的最后一位
xr = xr*10 + x%10;
x/=10;
}
// 循环结束后,得到了新的x和xr,接下来比较x和xr即可
// 当x为奇数时,比较x和xr/10是否相同,若相同,则x为回文数
// 当x为偶数时,比较x和xr是否相同,若相同,则x为回文数
return x == xr/10 || x == xr;
}
}
class Solution {
fun isPalindrome(xx: Int): Boolean {
// 临界情况处理
// 1. 负数一定不是回文数
var x = xx
if (x<0) return false
// 2. 大于0且个位数为0的数一定不是回文数
if ((x>0) and (x%10==0)) return false
// 对后半部分的数字进行反转,反转后得到的数字为xr
// 循环结束条件:x <= xr
var xr = 0
while (x > xr) {
// 取x的最后一位
xr = xr*10 + x%10
x /= 10
}
// 循环结束后,得到了新的x和xr,接下来比较x和xr即可
// 当x为奇数时,比较x和xr/10是否相同,若相同,则x为回文数
// 当x为偶数时,比较x和xr是否相同,若相同,则x为回文数
return (x == xr/10) or (x == xr)
}
}