[打卡7:leetcode9-回文数] |刷题打卡

478 阅读1分钟

掘金团队号上线,助你 Offer 临门! 点击 查看详情

前言

第一次参加掘金打卡活动,别的不说 主要是奔着奖励来的。4.12开始为了达到14题小目标 冲冲冲!!!这是第七题

image.png

题目描述

题目链接:回文数

题目描述我用截图leetcode的为主,所以题目如下图

image.png

思路分析

依照题目可以知道,起先思路很简单 直接转为字符串然后去反转这个字符串 看看反转前后会不会相等,然后就动手试试

image.png

一把过 心情愉悦,然后看到进阶下面写着不转为字符串去解决

image.png 那重新思考一下这道题 当是数字的时候怎么去判断是不是回文,因为是整数,1:负数的情况肯定非回文 2. 0~9的情况肯定是回文,那就是考虑大于9的情况怎么合理正面了 3.个位是0的也不是回文(010这种应该不是整数10的写法,如果没通过,就把这个考虑去掉)

// 0-9直接返回true
if(x>=0&&x<10){
        return true
    }
   // <0 或个位为0 直接返回false
    if(x<0||x%10===0){
        return false
    }

接下来就是考虑大于10的(且个位非0)的情况,整数反转,所以直接上手. 反转操作,( Math.ceil向上取整、Math.floor()去小数取整、Math.round四舍五入)

 while(y!=0){
      rvNum = y%10+rvNum*10
      y=Math.floor(y/10)
    }

image.png 提交一下 通过了 可以对比相对于刚刚转字符串的方法需要内存更多 耗时也增加了

AC 代码

/**
 * @param {number} x
 * @return {boolean}
 */
 // 1.转为字符串
var isPalindrome = function(x) {
    let y=x
    return  y.toString().split('').reverse().join('') === x.toString()
};

// 2.整数解法
var isPalindrome = function(x) {
    if(x>=0&&x<10){
        return true
    }
    if(x<0||x%10===0){
        return false
    }
    let y = x
    let rvNum=0
    while(y!=0){
      rvNum = y%10+rvNum*10
      y=Math.floor(y/10)
    }
    return rvNum===x
};

总结

多动手,多思考。第七题算法完成,坚持就是胜利!!!

       ↓↓↓

算法系列链接

       ↑↑↑

这里可以点!这里可以点!这里可以点!