js回文数的4种判断方法示例


Posted in Javascript onJune 04, 2019

前言

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

例如:

121,是回文数。
1221, 是回文数。
1234,不是回文数。
-121,也不是回文数。

一些特殊的情况:

  • 0-9的数字,都可以称为回文。
  • 不等于0,且尾数是0的数字,都不是回文。
  • 负数都不是回文。

1. 字符串的转换

1.1 简单点,使用高阶函数来完成

思路: 先将数字转成字符串A,再经过变成数组,数组反转,数组变成字符串B三步操作之后,比较字符串A和B,得出结论。

/**
 * @param {number} x
 * @return {boolean}
 */
var isPalindrome = function(x) {
  if ( x < 0 ) return false
  let str = '' + x
  return Array.from(str).reverse().join('') === str
};

1.2 从后往前循环字符串数组

思路:将数字转换成字符串A,从后往前循环字符串A,将循环出来的字符拼接成新的字符串B,比较字符串A和B,得出结论。

/**
 * @param {number} x
 * @return {boolean}
 */
var isPalindrome = function(x) {
  let str = x + ''
  let newStr = ''
  for(let len = str.length, i = len - 1; i >= 0 ; i--) {
    newStr += str[i]
  }}
  return newStr === str
};

1.3 以中间数为节点,判断左右两边首尾是否相等

/**
 * 以中间数为节点,判断左右两边首尾是否相等
 * @param {number} x
 * @return {boolean}
 */
var isPalindrome = function(x) {
  if ( x < 0 || (x !== 0 && x % 10 === 0)) {
    return false
  } else if ( 0 <= x && x < 10) {
    return true
  }
  x = '' + x
  for(let i = 0 ; i < x.length/2; i++) {
    if (x[i] !== x[x.length - i - 1]) {
      return false
    }
  }
  return true
};

2. 数字转换

2.1 求模得尾数,除10得整数

思路: 先判断一些特殊情况【小于0的、尾数为0的、小于10的正整数】。之后,将整数反转,反转前后两个整数是否相等来判断是否为回文整数。

这里的反转:将整数求模得到尾数,之后每求一次模,都再原数上添加一位(通过*10来得到),这样就能得到一个反转的数。

计算需要求模的次数: 将整数除10,来计算求模的次数。Math.floor() 返回小于或等于一个给定数字的最大整数。

/**
 * 求模得尾数,除10得整数
 * @param {number} x
 * @return {boolean}
 */
var isPalindrome = function(x) {
  if ( x < 0 || (x !== 0 && x % 10 === 0)) {
    return false
  } else if ( 0 <= x && x < 10) {
    return true
  }
  let y = x
  let num = 0
  while(x !== 0) {
    num = x % 10 + num * 10
    x = Math.floor(x / 10)
  }
  return y === num
};

以上即是回文数的判断方法,如有其它方法,可以补充。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JavaScript的9个陷阱及评点分析
May 16 Javascript
JavaScript面向对象(极简主义法minimalist approach)
Jul 17 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
Jan 09 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
Sep 14 Javascript
JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
Nov 15 Javascript
javascript关于继承解析
May 10 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
Sep 29 Javascript
Thinkjs3新手入门之如何使用静态资源目录
Dec 06 Javascript
vue中element 上传功能的实现思路
Jul 06 Javascript
node.js中express模块创建服务器和http模块客户端发请求
Mar 06 Javascript
webpack 如何同时输出压缩和未压缩的文件的实现步骤
Jun 05 Javascript
小程序实现左滑删除的效果的实例代码
Oct 19 Javascript
Vue对象赋值视图不更新问题及解决方法
Jun 03 #Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
Jun 03 #Javascript
JavaScript之数组扁平化详解
Jun 03 #Javascript
JavaScript从原型到原型链深入理解
Jun 03 #Javascript
生产制造追溯系统之再说条码打印
Jun 03 #Javascript
VUE安装使用教程详解
Jun 03 #Javascript
教你完全理解ReentrantLock重入锁
Jun 03 #Javascript
You might like
PHP使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
2015/06/10 PHP
JavaScript的9个陷阱及评点分析
2008/05/16 Javascript
基于jquery的无限级联下拉框js插件
2011/10/29 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
jquery遍历checkbox介绍
2014/02/21 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
js实现精确到秒的日期选择器完整实例
2016/04/30 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
2017/09/22 Javascript
20行JS代码实现粘贴板复制功能
2018/02/06 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
vue 配置多页面应用的示例代码
2018/10/22 Javascript
微信小程序如何获取群聊的openGid以及名称详解
2019/07/17 Javascript
wxPython中文教程入门实例
2014/06/09 Python
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
python中format()函数的简单使用教程
2018/03/14 Python
用Python读取几十万行文本数据
2018/12/24 Python
Python中shapefile转换geojson的示例
2019/01/03 Python
Python中的集合介绍
2019/01/28 Python
django使用JWT保存用户登录信息
2020/04/22 Python
CSS3实现淘宝留白的方法
2020/06/05 HTML / CSS
Grow Gorgeous美国官网:只要八天,体验唤醒毛囊后新生的茂密秀发
2018/06/04 全球购物
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
军训心得体会
2013/12/31 职场文书
护士演讲稿范文
2014/01/05 职场文书
精彩广告词大全
2014/03/19 职场文书
四风问题查摆材料
2014/08/25 职场文书
初中生300字旷课检讨书
2014/11/19 职场文书
pandas中DataFrame重置索引的几种方法
2021/05/24 Python
Pytorch distributed 多卡并行载入模型操作
2021/06/05 Python
MySQL 如何设计统计数据表
2021/06/15 MySQL