我的js算法爬坑之旅-回文数

258 阅读1分钟

第三天:力扣第9题,回文数:

地址:leetcode-cn.com/problems/pa…

思路:负数直接false,因为我后面直接判断大于零的,零直接true,然年后再声明数组,将数字存入数组,因为整数位无法直接比较,所以我是放在数组中比较的。

var isPalindrome = function(x) {
let a = x;
if(a<0)//直接先把负数和0导出
{return false; }
else if(a==0)
{return true;}
let b = [];//申明数组
for(let i = 0;a>0;i++)//循环将数字取余放入数组
{
b[i] = a%10;
a=Math.floor(a/10);//很关键,因为js不分整型和浮点型,所以要用Math方法取整,这个坑了我超长时间,记忆颇深。
}
for(let i = 0;i < b.length-1 ; i++)//循环判断
{
if(b[i]!=b[b.length-1-i])
{
return false;
}
}
return true;
};
执行用时:240 ms, 在所有 JavaScript 提交中击败了58.77%的用户
内存消耗:46.2 MB, 在所有 JavaScript 提交中击败了60.91%的用户

虽然说最好不用转字符串,但是找到一个转字符串的超简洁代码。

var isPalindrome = function(x) 

{ return x.toString() == x.toString().split("").reverse().join(""); }  

简单说明一下,toString就是转换为字符串,split就是把字符串转化成数组,reverse就是翻转一下,join就是把数组转化成字符串,再与前面的字符串比较,比较结果为true或者false,直接return,确实简洁。