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 29 Javascript
javascript showModalDialog模态对话框使用说明
Dec 31 Javascript
javascript 中that的含义示例介绍
May 14 Javascript
JavaScript中的parse()方法使用简介
Jun 12 Javascript
javascript自定义in_array()函数实现方法
Aug 03 Javascript
Angular 中 select指令用法详解
Sep 29 Javascript
JS常用正则表达式总结【经典】
May 12 Javascript
Angular指令之restict匹配模式的详解
Jul 27 Javascript
JS实现的缓冲运动效果示例
Apr 30 Javascript
JavaScript引用类型RegExp基本用法详解
Aug 09 Javascript
使用vue实现通过变量动态拼接url
Jul 22 Javascript
vue实现PC端分辨率适配操作
Aug 03 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 数组二分法查找函数代码
2010/02/16 PHP
深入解析Session是否必须依赖Cookie
2013/08/02 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
php 调用百度sms来发送短信的实现示例
2018/11/02 PHP
在laravel中实现ORM模型使用第二个数据库设置
2019/10/24 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
2020/06/06 PHP
javascript Demo模态窗口
2009/12/06 Javascript
js网页侧边随页面滚动广告效果实现
2011/04/14 Javascript
js中根据字数截取字符串,不能截断url
2012/01/12 Javascript
jquery聚焦文本框与扩展文本框聚焦方法
2012/10/12 Javascript
jquery的live使用注意事项
2014/02/18 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
基于JavaScript获取鼠标位置的各种方法
2015/12/16 Javascript
基于javascript实现仿百度输入框自动匹配功能
2016/01/03 Javascript
深入理解 Koa 框架中间件原理
2018/10/18 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
2019/08/08 Javascript
node.js Promise对象的使用方法实例分析
2019/12/26 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
在Vue中实现随hash改变响应菜单高亮
2020/03/09 Javascript
Vue 构造选项 - 进阶使用说明
2020/08/14 Javascript
AJAX XMLHttpRequest对象创建使用详解
2020/08/20 Javascript
在项目vue中使用echarts的操作步骤
2020/09/07 Javascript
浅析JavaScript 函数柯里化
2020/09/08 Javascript
node.js获取参数的常用方法(总结)
2017/05/29 Python
对numpy 数组和矩阵的乘法的进一步理解
2018/04/04 Python
python实现接口并发测试脚本
2019/06/25 Python
Python批量启动多线程代码实例
2020/02/18 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
CSS3的Border-radius轻松制作圆角
2012/12/24 HTML / CSS
国庆节演讲稿
2014/05/27 职场文书
入党积极分子培养人意见
2015/06/02 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书
六年级数学教学反思
2016/02/16 职场文书