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正则表达式中参数g(全局)的作用
Nov 11 Javascript
JS获取整个页面文档的实现代码
Dec 15 Javascript
灵活应用js调试技巧解决样式问题的步骤分享
Mar 15 Javascript
js的onload事件及初始化按钮事件示例代码
Sep 25 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
Nov 23 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
Nov 10 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
Jan 24 Javascript
浅谈Angular 的变化检测的方法
Mar 01 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
Jun 27 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
Sep 13 Javascript
ES6中的类(Class)示例详解
Dec 09 Javascript
js用正则表达式筛选年月日的实例方法
Jan 04 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中使用GD库做验证码
2016/03/31 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
php实现socket推送技术的示例
2017/12/20 PHP
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
2009/06/04 Javascript
JavaScript 学习笔记(十三)Dom创建表格
2010/01/21 Javascript
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
2012/05/23 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
2012/12/15 Javascript
jQuery浏览器CSS3特写兼容实例
2015/01/19 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
2017/02/16 Javascript
socket.io学习教程之深入学习篇(三)
2017/04/29 Javascript
Bootstrap Table快速完美搭建后台管理系统
2017/09/20 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
[43:47]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第一场 12.09
2020/12/11 DOTA
Python实现列表转换成字典数据结构的方法
2016/03/11 Python
pycharm中连接mysql数据库的步骤详解
2017/05/02 Python
python实现八大排序算法(2)
2017/09/14 Python
python实时监控cpu小工具
2018/06/21 Python
python根据文章标题内容自动生成摘要的实例
2019/02/21 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
2020/06/04 Python
python+requests接口自动化框架的实现
2020/08/31 Python
CSS3绘制不规则图形的一些方法示例
2015/11/07 HTML / CSS
美国婚戒购物网站:Anjays Designs
2017/06/28 全球购物
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
大学生新学期计划书
2014/04/28 职场文书
求职简历自荐信
2014/06/18 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
上市公司董事长岗位职责
2015/04/16 职场文书
国庆节新闻稿
2015/07/17 职场文书
Flask response响应的具体使用
2021/07/15 Python
Win11电脑显示本地时间与服务器时间不一致怎么解决?
2022/04/05 数码科技