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 相关文章推荐
从jquery的过滤器.filter()方法想到的
Sep 29 Javascript
jquery获取元素索引值index()示例
Feb 13 Javascript
JavaScript中的方法调用详细介绍
Dec 30 Javascript
JQuery插件jcarousellite的参数中文说明
May 11 Javascript
jQuery在线选座位插件seat-charts特效代码分享
Aug 27 Javascript
快速掌握Node.js事件驱动模型
Mar 21 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
Oct 30 Javascript
概述javascript在Google IE中的调试技巧
Nov 24 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
Sep 27 Javascript
把vue-router和express项目部署到服务器的方法
Feb 21 Javascript
详解关于element el-button使用$attrs的一个注意要点
Nov 09 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
Feb 22 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
长波有什么东西
2021/03/01 无线电
PHP常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
php获取远程图片体积大小的实例
2013/11/12 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
让codeigniter与swfupload整合的最佳解决方案
2014/06/12 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
php函数重载的替代方法--伪重载详解
2015/05/08 PHP
刷新PHP缓冲区为你的站点加速
2015/10/10 PHP
smarty自定义函数用法示例
2016/05/20 PHP
php的laravel框架快速集成微信登录的方法
2016/12/12 PHP
php的常量和变量实例详解
2017/06/27 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
PHP文件类型检查及fileinfo模块安装使用详解
2019/05/09 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
基于JQuery的日期联动实现代码
2011/02/24 Javascript
仿百度输入框智能提示的js代码
2013/08/22 Javascript
jquery实现弹出层遮罩效果的简单实例
2014/03/03 Javascript
javascript中 try catch用法
2015/08/16 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
Bootstrap基本模板的使用和理解1
2016/12/14 Javascript
JavaScript自定义分页样式
2017/01/17 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
vue在响应头response中获取自定义headers操作
2020/07/24 Javascript
python在不同层级目录import模块的方法
2016/01/31 Python
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
使用django的objects.filter()方法匹配多个关键字的方法
2019/07/18 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
如何Tkinter模块编写Python图形界面
2020/10/14 Python
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
怎样写好自荐信和推荐信
2013/12/26 职场文书
阿德的梦教学反思
2014/02/06 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
故宫的导游词
2015/01/31 职场文书
2015年世界无烟日活动方案
2015/05/04 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
机关单位2016年法制宣传日活动总结
2016/04/01 职场文书