每日算法系列(一)之 回文数

该篇博客介绍了一种利用字符串方法判断回文数的解题思路,通过将整数转化为字符串,再进行反转比较,从而确定是否为回文。示例中详细解释了每一步操作,并给出了代码实现,包括将数字转换为字符串、数组反转、再转回数字进行比较。文章结尾邀请读者分享优化建议。

回文数

给你一个整数 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 最终简化代码,得到最优解:

/**

* @param {number} x

* @return {boolean}

*/

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

这个解题思路采用取巧的方法,还存在许多优化的地方,有优化的地方也可以在评论区评论,欢迎大佬评论,共同进步🤪。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值