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;
    }
}
posted @ 2025-05-19 19:14  星星永远发着光  阅读(9)  评论(0)    收藏  举报