回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
示例 1:
输入:x = 121 输出:true 示例 2:
输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3:
输入:x = 10 输出:false 解释:从右向左读, 为 01 。因此它不是一个回文数。 示例 4:
输入:x = -101 输出:false
题目来源:力扣(LeetCode)
解题思路:将number转化为string类型,再通过字符串方法split切割字符串得到一个Array,将Array进行反转,再转化为number类型。如果反转后得到的数字和传入的数字是一样的,那么该数字就是回文数。(取巧方式)
我们通过拆分进行一步一步的讲解。
1 将number转化为字符串,可使用toString方法进行转化。
2 转化后的字符串需要拆分为数组的形式,字符串的方法split()是将字符串以某种形式进行裁切,得到的是数组。也就是说,接上一步方法toString()split(’’)我们可以得到对应的数组。
3 数组方法reverse()的作用就是将该数组的每一项值进行反转,改动原数组。
4 得到反转后的数组后,就需要将它变成字符串,并且转化为数字类型,数组有一个方法,是将该数组内以什么形式拼接起来,就是join()方法,得到一个数字字符串,通过隐式转换(* 1)变成number类型。join(’’) * 1。
5 最终简化代码,得到最优解:
var isPalindrome = function(x) {
if (x < 0) {
return false
}
const y = x.toString().split('').reverse().join('') * 1
return y == x
};
11510 / 11510 个通过测试用例
内存消耗:46.9MB
时间消耗:173ms
这个解题思路采用取巧的方法,还存在许多优化的地方,有优化的地方也可以在评论区评论,欢迎大佬评论,共同进步🤪。
|