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实现遮罩层效果的简单实例
Nov 12 Javascript
jQuery操作DOM之获取表单控件的值
Jan 23 Javascript
JQuery动态添加和删除表格行的方法
Mar 09 Javascript
javaScript中slice函数用法实例分析
Jun 08 Javascript
浅谈js的ajax的异步和同步请求的问题
Oct 07 Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
Feb 08 Javascript
jQuery实用密码强度检测
Mar 02 Javascript
create-react-app构建项目慢的解决方法
Mar 14 Javascript
Angular入口组件(entry component)与声明式组件的区别详解
Apr 09 Javascript
js数据类型转换与流程控制操作实例分析
Dec 18 Javascript
JavaScript数组常用的增删改查与其他属性详解
Oct 13 Javascript
vuex的使用和简易实现
Jan 07 Vue.js
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
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
PHP多进程编程实例
2014/10/15 PHP
php控制文件下载速度的方法
2015/03/24 PHP
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
给网站上的广告“加速”显示的方法
2007/04/08 Javascript
JavaScript 学习小结(适合新手参考)
2009/07/30 Javascript
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
使用JS实现jQuery的addClass, removeClass, hasClass函数功能
2014/10/31 Javascript
页面内容排序插件jSort使用方法
2015/10/10 Javascript
基于Vue实现图书管理功能
2017/10/17 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
2018/05/12 Javascript
JS实现二维数组元素的排列组合运算简单示例
2019/01/28 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
python类继承用法实例分析
2014/10/10 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
对Python 检查文件名是否规范的实例详解
2019/06/10 Python
在python中将list分段并保存为array类型的方法
2019/07/15 Python
一行python实现树形结构的方法
2019/08/09 Python
用python爬取历史天气数据的方法示例
2019/12/30 Python
python在不同条件下的输入与输出
2020/02/13 Python
Python阶乘求和的代码详解
2020/02/14 Python
python matplotlib包图像配色方案分享
2020/03/14 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
魔声耳机官方网站:Monster是世界第一品牌的高性能耳机
2016/10/26 全球购物
Champion官网:美国冠军运动服装
2017/01/25 全球购物
商务英语求职自荐信范文
2013/12/24 职场文书
汉语言文学职业规划
2014/02/14 职场文书
俄语专业职业生涯规划
2014/02/26 职场文书
2014法院干警廉洁警示教育思想汇报
2014/09/13 职场文书
三峡导游词
2015/01/31 职场文书
python读取pdf格式文档的实现代码
2021/04/01 Python
Python Flask请求扩展与中间件相关知识总结
2021/06/11 Python
python中%格式表达式实例用法
2021/06/18 Python