SOURCE

/*给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。*/

//我采用了字符串双指针法,想起来之前写的合并两个有序数组,也是用的双指针写法
var isPalindrome = function(str) {
    let left = 0;
    let right = str.length - 1;
    while (left < right) {
        if (str[left] !== str[right]) {
            return false;
        }
        left++;
        right--;
    }
    return true;
};
//AI给的另一种思路:可以用数字反转法,考虑边界值的情况
var isPalindrome = function(x) {
    // 处理边界情况
    if (x < 0 || (x % 10 === 0 && x !== 0)) return false;
    if (x < 10) return true; // 单个数字一定是回文数
    
    let reversed = 0;
    let original = x;
    
    // 反转一半数字进行比较
    while (x > reversed) {
        reversed = reversed * 10 + x % 10;
        x = Math.floor(x / 10);
    }
    
    // 处理奇偶长度情况
    return x === reversed || x === Math.floor(reversed / 10);
};

//结合AI的建议,整理代码
var isPalindrome = function(x) {
    // 处理边界情况
    if (x < 0 || (x % 10 === 0 && x !== 0)) {
        return false;
    }
    // 转为字符串处理
    const str = x.toString();
    let left = 0;
    let right = str.length - 1;

    while (left < right) {
        if (str[left] !== str[right]) {
            return false;
        }
        left++;
        right--;
    }
    return true;
};

console.log(isPalindrome(12321))//true
console.log(isPalindrome(1231))//false
console.log(isPalindrome(1221221))//true
console 命令行工具 X clear

                    
>
console