leetCode第九题,回文数(Palindrome Number),JavaScript实现

975 阅读1分钟

   本博客的作者与csdn里Tank_in_the_street的作者是同一作者,转载文章需写明出处。

本文章的代码已上传到GitHub,地址是回文数,喜欢的老铁点个赞,谢谢合作。

今天刷的题目是算法题里最简单的回文数,题目如下所示:


在不考虑进阶的情况下,可以通过将整数转换成字符串,利用字符串在JavaScript里的特性可以很快的得出结果。方法是遍历字符串的前一半字符是否等于后一半的字符,方法如下:


如果是单纯的转换字符串的话那这道题的确是小意思。那我们现在来试一下进阶。进阶的条件是不能将整数转换成字符串,那我们可以弄一个temp(英文template的缩写)变量来存形参x的值,再弄一个变量curr(英文current的缩写),这个算法的思路是temp每一位数的10的余数加上curr乘以10,这里的curr变量就是记录temp每一位数的10的余数加上curr乘以10的值。代码如下:


这里需要注意的一点就是求余和相除必须要加上Math.floor()函数,这是由于在计算机的小数转换成二进制中是无被整除的,并且JavaScript是基于IEEE 754 标准的,所以会出现精度上的问题。这个问题在面试上被问无数遍,典型的经典例题就是0.1+0.2是不等于0.3。关于JavaScript的IEEE 754的相关文章介绍请查看下面这篇文章:JavaScript浮点计算问题