来公众号「九零后重庆崽儿」,我们一起学前端

回文数:

说明:现阶段的解题暂未考虑复杂度问题

首发地址:

我用JS刷LeetCode | Day 6 | Palindrome Number​www.brandhuang.com

Question:

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

Coud you solve it without converting the integer to a string?

中文题目:

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

注意:

你能不将整数转为字符串来解决这个问题吗?

Example:

Input: 121
Output: trueInput: -121
Output: falseInput: 10
Output: false

个人分析:

  1. 看到题目「回文数字」,我们第一反应很有可能就是将数字先转成字符串然后转成数组,最后利用数组的 reverse 方法进行倒序,然后转换成数字来判断原数字新数字是否相等即可,即 答案一
  2. 我们可以分析下回文数的特点可以发现,他是一个对称结构的数,所以从两端向中间遍历,如果遍历出的两个字符不相等,则说明不是回文数,直接返回 false,,否则一直遍历到从两端遍历的交叉点为止。所以有了答案二
  3. 但是,题目最后还有个问题:「你能不将整数转为字符串来解决这个问题吗?」
  4. 不转成字符串的方法我没有做出来!,看了大神们的答案后简单分析下 答案三
  5. 主要思路就是把数字翻过了,然后和输入值进行比较,如果相等,则是回文数,否则不是回文数。
  6. 声明一个 s变量来存输入的 x,声明一个 rev变量来存输入的数字的个位数。
  7. 当把输入值的个位数移到变量 rev 中后,输入值的位数少了一位,所以有新的 s 值变成了 s / 10Math.floor(s / 10) 是取整方便计算。
  8. rev 的值每次循环都会增加一位,所以新的 rev 变成了 上一步中的 rev 乘以 10然后加上这一步中的 s的个位数
  9. 直到 s 变为 0 时循环停止,此时比较原输入值和倒序后的值,若相等,则是回文数,否则不是回文数
  10. 得出答案三

Answer:

一、答案一

var isPalindrome = function(x) {return x === Number(x.toString().split('').reverse().join(''))
};

二、答案二

var isPalindrome = function(x) {let xStr = x.toString()let i = 0; // 头部let j = xStr.length - 1 // 尾部while(i < j){if(xStr[i] !== xStr[j]) {return false;} else{i ++;j --;}}return true
};

三、答案三

var isPalindrome = function(x) {let s = x;let rev = 0while (s > 0) {rev = rev * 10 + s % 10s = Math.floor(s / 10)}return x === rev
};

其他:

本题更多 JavaScript 解析,点击链接访问对应的答案:https://leetcode.com

js 数组倒序_我用JS刷LeetCode | Day 6 | Palindrome Number相关推荐

  1. js splice方法_我用JS刷LeetCode | Day 8

    如有兴趣,微信搜索「九零后重庆崽儿」,我们一起学前端. 删除排序数组中的重复项: 说明:现阶段的解题暂未考虑复杂度问题 首发地址: 我用JS刷LeetCode | Day 8​www.brandhua ...

  2. c++ 构造函数数组_从 JS 数组操作到 V8 array.js

    前言 最近在写面试编程题,经常用到数组,经常想偷个懒,用它提供的方法,奈何还是对数组方法使用不熟练,导致写了很多的垃圾代码,很多地方稍加修改的话肯定变得简洁高效优雅? 所以✍这篇文章本着了解一下Jav ...

  3. 微信小程序js数组初始化_微信小程序学习Course 3-2 JS数组对象学习

    微信小程序学习Course 3-2 JS数组对象学习 本节主要介绍JS中的数组. 3-2.1 数组的声明 数组声明的方式多种,如下例.一般我们可以先创建一个空数组,然后再填充. var names = ...

  4. JS数组删除指定下标元素 JS删除对象指定元素

    一.JS数组删除指定下标元素 splice方法--Array.splice(index,n) 参数语义化理解:删除以下标index为起点的n个元素.(之后的元素会往前移动) 注意:splice会直接改 ...

  5. node.js编写网页_为Node.js编写可扩展架构

    node.js编写网页 by Zafar Saleem 通过Zafar Saleem 为Node.js编写可扩展架构 (Writing Scalable Architecture For Nodejs ...

  6. js list操作_使用 Node.js 实现一个命令行 todo-list(1)- 基本功能

    功能介绍 为了熟悉 Node.js,使用 Node.js 制作一个命令行小工具,项目仓库:https://github.com/FuZhouJohn/node-todo,先来介绍一下功能: 添加任务: ...

  7. js数组获取index_想自学JS吗?想提升JS底层原理吗?76张脑图带你彻底搞懂原生JS...

    本篇内容适用于:初学前端:及工作时间不久想回顾基础的各位伙伴: 文章主要由图片组成,看起来可能会不太方便,适合保存下来单张查看: 既然来了,就看看在走吧,总会有些收获的: 一.前端发展史 二.JS基础 ...

  8. js声明数组 js数组如何获取真实对象 js数组处理null值情况 js数组通过下标赋值和push赋值的区别 loopback4的基础使用

    目录 问题来源 js数组 数组通过下标赋值 数组通过push赋值 总结 loopback4 安装 创建项目 项目启动 访问项目 创建HelloController 运行访问HelloControlle ...

  9. node.js中模块_在Node.js中需要模块:您需要知道的一切

    node.js中模块 by Samer Buna 通过Samer Buna 在Node.js中需要模块:您需要知道的一切 (Requiring modules in Node.js: Everythi ...

最新文章

  1. 基于多阈值注意U-Net(MTAU)的MRI多模态脑肿瘤分割模型
  2. unity 代码边缘发光_Shader案例之内发光和边缘泛光效果
  3. Zend framework重定向的方法
  4. 移动端H5页面高清多屏适配方案
  5. Linux内核模块的概念和基本的编程方法
  6. IP Cam须改原厂密码防黑客
  7. 如何使用XML 配置的方式配置Spring?
  8. [css] 使用css如何设置背景虚化?
  9. Android 生成随机数,获取一条随机字符串
  10. 【学习笔记】网络层——IPv6:地址表示、IPv4的对比、IPv4过渡到IPv6、基本地址类型等
  11. 利用WebBrowser获得页面部分数据
  12. linux打印jvm内存堆栈_jvm内存堆栈监控之jmap篇
  13. 理解结构与表现相分离
  14. 后端MultipartFile接收文件转Base64
  15. SHELLEXECUTEINFO 和 ShellExecuteEx的使用
  16. 双机流水作业调度问题——Johnson算法
  17. html页面小宠物代码大全,纯css3实现宠物小鸡实例代码
  18. Ubuntu 20.04 安装 ros 遇到的问题: The following packages have unmet dependencies
  19. 【二叉树】重建二叉树
  20. React Native带你一步步实现热更新(CodePush-Android)

热门文章

  1. python读取图像数据的一些方法
  2. vue跳转到同一路由但传递参数不同,从而判断页面显示内容
  3. 2022-2028全球与中国非PVC静脉注射袋市场现状及未来发展趋势
  4. 如何保持mysql和redis中数据的一致性?
  5. MySQL主从复制原理解析
  6. 乐视影业嬗变:从影业到物联网
  7. parser.feed_提示,使用Universal Feed Parser驯服RSS
  8. Java读取.ipa程序下info.plist
  9. php随机整数函数,PHP随机数函数rand()与mt_rand()
  10. 架构思维成长系列教程(十四)- 不想当架构师的程序员不是好程序员