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 相关文章推荐
推荐:极酷右键菜单
Nov 29 Javascript
javaScript同意等待代码实现心得
Jan 01 Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
Nov 30 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
Jan 06 Javascript
jquery操作复选框checkbox的方法汇总
Feb 05 Javascript
微信小程序 封装http请求实例详解
Jan 16 Javascript
Easyui Tree获取当前选择节点的所有顶级父节点
Feb 14 Javascript
angular directive的简单使用总结
May 24 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
Mar 06 Javascript
Angular5集成eventbus的示例代码
Jul 19 Javascript
JavaScript对JSON数组简单排序操作示例
Jan 31 Javascript
Javascript前端下载后台传来的文件流代码实例
Aug 18 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 session应用实例 登录验证
2009/03/16 PHP
基于initPHP的框架介绍
2013/04/18 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
PHP命名空间(namespace)的使用基础及示例
2014/08/18 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
windows下安装php的memcache模块的方法
2015/04/07 PHP
php写入文件不覆盖的实例讲解
2019/09/17 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
dojo随手记 gird组件引用
2011/02/24 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
购物车选中得到价格实现示例
2014/01/26 Javascript
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
Node.js实现文件上传
2016/07/05 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
2016/11/21 Javascript
基于vue-ssr服务端渲染入门详解
2018/01/08 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
layui实现多图片上传并限制上传的图片数量
2019/09/26 Javascript
Layui表格监听行单双击事件讲解
2019/11/14 Javascript
Python fileinput模块使用介绍
2014/11/30 Python
python简单实现获取当前时间
2016/08/27 Python
python判断字符串是否是json格式方法分享
2017/11/07 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
2018/06/11 Python
python 实现语音聊天机器人的示例代码
2018/12/02 Python
python算法与数据结构之冒泡排序实例详解
2019/06/22 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
雅诗兰黛旗下专业男士保养领导品牌:Lab Series
2017/05/15 全球购物
金士达面试非笔试
2012/03/14 面试题
计算机操作自荐信
2013/12/07 职场文书
开业典礼主持词
2014/03/21 职场文书
党员先锋岗事迹材料
2014/05/08 职场文书
2014年化验室工作总结
2014/11/21 职场文书
2014年预算员工作总结
2014/12/05 职场文书
Python实现制作销售数据可视化看板详解
2021/11/27 Python