9.回文数
class Solution {
public boolean isPalindrome(int x) {
// 处理负数情况:所有负数都不是回文数
if(x < 0) {
return false; // 示例:-121 反转后121-,明显不匹配
}
int cur = 0; // 存储反转后的数字
int num = x; // 保留原始值用于最终比较
// 数字反转过程(可能溢出但不需要特殊处理)
while(num != 0) {
/* 构建反转数字:
每次将当前结果左移一位(*10)
然后加上原始数字的末位(num%10)
示例:x=123 → 第一次cur=3,第二次32,第三次321
*/
cur = cur * 10 + num % 10;
// 移除已处理的最低位(自动处理正负数)
num /= 10; // 等价于 num = num / 10;
}
/* 最终比较:
原始数字与反转后数字是否相等
注意:当原数字是回文但反转后溢出时(如2147447412),
此方法会错误返回false,这是本实现的局限性
*/
return cur == x;
}
}

浙公网安备 33010602011771号