# 题目内容

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

# 解法一,我的解法

先将输入转换为字符串并处理为数组且倒转,如果倒转后的字符串等于倒转前,那么即可认为该数为回文数。

但这个方法特别容易想到,那么他的效率肯定不是最高的。最多人走的路,很大可能不是最顺畅的那条。

var isPalindrome = function(x) {
    let returnVal = false
    let val = String(x).split('').reverse()
    let valCopy = String(x)
    if (val.join('') === valCopy) {
        return true
    } else {
        return false
    }   
};
1
2
3
4
5
6
7
8
9
10

在浏览各种leetcode相关仓库时,偶然翻到这个答案。虽然我们思路一样,但明显以下代码简洁得多,学习了。

var isPalindrome = function(x) {
    return x.toString() == x.toString().split('').reverse().join('');
};
1
2
3

# 解法二,巧取法

观察回文数,会发现其有个特点即是对称,首尾的数字是一样的,倒数第一个数字和倒数第二个数字是一样的... 一旦发现对称位置的数字不一样即可判定为false。

var isPalindrome = function(x) {
    if(x<0) return false;
    let flag = true;
    x = x.toString()

    for(let i=0, len=x.length; i<len/2; i++){
        if(x[i] !== x[len-1-i]){
            flag = false;
            break
        }
    }
    return flag
};
1
2
3
4
5
6
7
8
9
10
11
12
13
一笔写于: 5/24/2020, 4:34:20 PM
扫码添加我的微信
个人
个人号
公众号
公众号