同一算法不同解法(回文数)

70 阅读1分钟

2. 回文数

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。
// 思路:从前到后和从后到前两个数组应该完全一样
var isPalindrome = function(num) {
    let finallyArr=[]
    let finallyData=[]
    finallyArr=String(num).split('')
    for (let i = 0; i < finallyArr.length; i++) {
        finallyData.unshift(finallyArr[i])
    }
    if(JSON.stringify(finallyArr)===JSON.stringify(finallyData)){
        return true
    }else {
        return false
    }
};

image-20220830134237635.png

var isPalindrome = function(x) {
    if (x < 0) {
        return false
    } else {
        let temp = x
        let res = 0
        while (x > 0) {
            // 反转x
            res = res * 10 + x % 10
            // 对x位数减1,并对x取整
            x = parseInt(x / 10)
        }
        return temp == res
    }
};

image-20220830135658877.png

其实这个是我们很容易能够想到的思路就是将数字反转比较即可。 只是在思考如何高效的处理数字反转时,想象不到一个好用的思路
上面这个方法巧用了取余。还是那句话,不要追求100%的效率,而要看看不同的思路,而带来的不同效果。