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实现的鼠标链接提示效果生成器代码
Jun 28 Javascript
原生js实现跨浏览器获取鼠标按键的值
Apr 08 Javascript
Node.js中使用计时器定时执行函数详解
Aug 15 Javascript
JavaScript实现找出字符串中第一个不重复的字符
Sep 03 Javascript
bootstrap实现图片自动轮播
Dec 21 Javascript
Js apply方法详解
Feb 16 Javascript
JavaScript使用readAsDataUrl方法预览图片
May 10 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
Nov 15 Javascript
vue+vue-router转场动画的实例代码
Sep 01 Javascript
layui之数据表格--与后台交互获取数据的方法
Sep 29 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
Dec 16 Javascript
JavaScript控制台的更多功能
Apr 28 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
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
2007/03/15 PHP
CI(Codeigniter)的Setting增强配置类实例
2016/01/06 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
你所要知道JS(DHTML)中的一些技巧
2007/01/09 Javascript
Javascript之文件操作
2007/03/07 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
2016/01/18 Javascript
微信小程序 rpx 尺寸单位详细介绍
2016/10/13 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
vue父组件向子组件(props)传递数据的方法
2018/01/02 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
JavaScript实现计算圆周率到小数点后100位的方法示例
2018/05/08 Javascript
Vue.js实现的表格增加删除demo示例
2018/05/22 Javascript
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
python实现在windows服务中新建进程的方法
2015/06/30 Python
Phantomjs抓取渲染JS后的网页(Python代码)
2016/05/13 Python
Python 40行代码实现人脸识别功能
2017/04/02 Python
Python编写一个闹钟功能
2017/07/11 Python
Python多线程同步---文件读写控制方法
2019/02/12 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
python实现实时视频流播放代码实例
2020/01/11 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
英国独特礼物想法和个性化礼物网站:notonthehighstreet.com
2018/04/16 全球购物
ProBikeKit德国:在线公路自行车专家
2018/06/03 全球购物
小区停车场管理制度
2014/01/27 职场文书
大学运动会通讯稿
2014/01/28 职场文书
安全生产中长期规划实施方案
2014/02/21 职场文书
妈妈再爱我一次观后感
2015/06/08 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书