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 相关文章推荐
js实现的GridView即表头固定表体有滚动条且可滚动
Feb 19 Javascript
js封装可使用的构造函数继承用法分析
Jan 28 Javascript
jQuery常用数据处理方法小结
Feb 20 Javascript
node.js读取文件到字符串的方法
Jun 29 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
Aug 14 Javascript
使用jQuery实现简单的tab框实例
Aug 22 jQuery
JS继承与闭包及JS实现继承的三种方式
Oct 15 Javascript
将Sublime Text 3 添加到右键中的简单方法
Dec 12 Javascript
详解vue-cli中模拟数据的两种方法
Jul 03 Javascript
玩转Koa之核心原理分析
Dec 29 Javascript
Vue 指令实现按钮级别权限管理功能
Apr 23 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
Sep 21 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
phpMyAdmin 安装配置方法和问题解决
2009/06/08 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
2013/07/05 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
Yii框架弹出框功能示例
2017/01/07 PHP
PHP的Trait机制原理与用法分析
2019/10/18 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
jquery遍历input取得input的name
2009/04/27 Javascript
Document对象内容集合(比较全)
2010/09/06 Javascript
jQuery-Tools-overlay 使用介绍
2012/07/14 Javascript
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
调试JavaScript中正则表达式中遇到的问题
2015/01/27 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
2016/07/11 Javascript
js仿QQ邮箱收件人选择与搜索功能
2017/02/10 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
JS 判断某变量是否为某数组中的一个值的3种方法(总结)
2017/07/10 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
JS实现模糊查询带下拉匹配效果
2018/06/21 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
Vue分页插件的前后端配置与使用
2019/10/09 Javascript
详解JavaScript中的Object.is()与&quot;===&quot;运算符总结
2020/06/17 Javascript
对于Python中RawString的理解介绍
2016/07/07 Python
想学python 这5本书籍你必看!
2018/12/11 Python
深入了解Django中间件及其方法
2019/07/26 Python
CSS中的字体大小设置属性总结
2016/05/24 HTML / CSS
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
新闻记者个人求职的自我评价
2013/11/28 职场文书
法人授权委托书
2014/04/03 职场文书
运动会口号8字
2014/06/07 职场文书
无保留意见审计报告
2015/06/05 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
七年级作文之秋游
2019/10/21 职场文书
600字作文之感受大自然
2019/11/27 职场文书
Python保存并浏览用户的历史记录
2022/04/29 Python
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS