题目
给你一个整数
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 }
坚持努力,无惧未来!