持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情
题目
给你一个整数
x,如果x是一个回文整数,返回true;否则,返回false,回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如,121是回文,而123不是。
输入: x = -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
题解
我们先声明一个arr变量,并将出参
x通过通过toString方法转换为字符串,在通过split方法转换为数组,转换为数组之后使用reverse方法将其反转后赋值给arr变量,然后在声明一个res变量,他的值是一个空的数组,我们对arr变量使用循环,在循环中使用数组的push方法,将arr变量当前循环中的值添加到str数组中,然后在声明一个num变量,默认值是数字0,然后使用if语句进行判断,当前res数组中的第一个数值是不是-号或者当前res数组中的第一个数值是不是等于0如果其中一项是则直接返回false,如果不是则进入else语句,在else语句中,我们使用循环进行循环res数组,循环条件是倒着从res获取数据下标,当下标小于0或者等于0则停止循环,在循环中我们也进行判断,这里对当前arr数组结合当前res循环的下标,进行判断等不等于res数组结合num变量获取到的值,如果不等于则直接返回false,如果等于则num变量自增1,其实在循环中这里做的就是将arr数组的倒序值和res数组的正序值进行比较,当循环结束后,如果没有返回false的情况则直接返回true
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
let arr=x.toString().split('').reverse()
let res= []
for(let k=0;k<arr.length;k++){
res.push(arr[k])
}
let num=0
if(res[0]==='-'||res[0]===0){
return false
}else{
for(let i=res.length-1;i>=0;i--){
if(arr[i]!==res[num]){
return false
}
num++
}
}
return true
}
坚持努力,无惧未来!