大厂面试题-力扣第9题超详细解析

题目描述:

判断一个数是否是回文数。回文数是指正序(从左到右)和倒序(从右到左)读都是一个数。例如121:正序和逆序都是121

解题思路:

既然我们知道了什么是回文数,知道了回文数正序和逆序的特征,我们可以利用这点,封装一个函数,将要判断的整数传入,我们需要把传入 整数变成数组,再得到一个新的数组,这个数组是原数组的倒序数组,利用这两个数组的length相同,只需比较对应下标的值是否一样即可判断这个数是否是回文数。话不多说,直接上代码感受一下~

1.首先把传入的整数,变成数组

function isPalindrome( x ){
	//因为字符串变数组比较方便,所以利用字符串拼接先把整数变成字符串
    x += ""
    //再用split把字符串变成数组
    var arr = x.split("")
}

2.经过上述操作,我们已经把整数变成数组,这个时候需要得到原数组的倒序数组

//定义一个新数组
var new_arr = []
//循环把原数组从后往前插入这个数组
for(var i = arr.length - 1 ; i >= 0 ; i --){
	new_arr.push(arr[i])
}
//这里有小伙伴可能会问,数组倒序简单啊,直接reverse数组API不就倒序了吗?
//注意,reverse会返回一个原数组,也就是说会改变原数组,我们需要用到原数组,所以不能改变它,reverse在这里不合适!!!

3.我们需要得到两个数组相应下标的值是否相等

//因为我们不好直接得到结果,所以定义一个标识变量用来记录状态
var flag = false
//遍历随便一个数组,因为两个数组length相等,我们只需得到下标即可,所以遍历可以随便
for(var k = 0 ; k < new_arr.length ; k ++){
    //如果对应下标的值相等,标识变量变成true
    if(new_arr[k] === arr[k]){
        flag = true
    }else{
	//只要有一个值不相等,说明这break个数不是回文数,标识变量变为flase,跳出循环,直接返回
        flag = fasle
        break
    }
}

4.返回标识变量

function isPalindrome( x ){
	return flag
}

到这里就实现了判断回文数,整体代码如下

function isPalindrome( x ){
            x += ""
            x = x.split("")
            var arr = []
            for(var i = x.length - 1 ; i >= 0 ; i --){
                arr.push(x[i])
            }
            var flag = false
            for(var k = 0 ; k < arr.length ; k ++){
                if(arr[k] === x[k]){
                    flag = true
                }else{
                    flag = false
                    break
                }
            }
            return flag
        }
        var res = isPalindrome(123321)
        console.log(res) //true

        var res1 = isPalindrome(1233211)
        console.log(res1) //false

08-31 11:08