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 相关文章推荐
IE8 引入跨站数据获取功能说明
Jul 22 Javascript
javascript开发技术大全-第3章 js数据类型
Jul 03 Javascript
js弹窗返回值详解(window.open方式)
Jan 11 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
Nov 17 Javascript
在HTML中插入JavaScript代码的示例
Jun 03 Javascript
AngularJS入门教程之ng-checked 指令详解
Aug 01 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
Jan 18 Javascript
javascript验证香港身份证的格式或真实性
Feb 07 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
Apr 13 Javascript
深入掌握 react的 setState的工作机制
Sep 27 Javascript
使用Vant完成Dialog弹框案例
Nov 11 Javascript
vue+spring boot实现校验码功能
May 27 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
php 图像函数大举例(非原创)
2009/06/20 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
php遍历文件夹所有文件子文件夹函数代码
2013/11/27 PHP
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
js获取或设置当前窗口url参数的小例子
2013/10/14 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
JQuery 图片滚动轮播示例代码
2014/03/24 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
JavaScript正则表达式中的ignoreCase属性使用详解
2015/06/16 Javascript
window.location.hash知识汇总
2015/11/09 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
javascript 中的事件委托详解
2016/10/25 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
2016/11/29 Javascript
js封装tab标签页实例分享
2016/12/19 Javascript
详解vue组件化开发-vuex状态管理库
2017/04/10 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
angular4笔记系列之内置指令小结
2018/11/09 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
微信内置开发 iOS修改键盘换行为搜索的解决方案
2019/11/06 Javascript
python获取目录下所有文件的方法
2015/06/01 Python
Python的条件语句与运算符优先级详解
2015/10/13 Python
python中的闭包函数
2018/02/09 Python
Python+PIL实现支付宝AR红包
2018/02/09 Python
Python实现的远程登录windows系统功能示例
2018/06/21 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
2018/12/02 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
python的mysql数据库建立表与插入数据操作示例
2019/09/30 Python
Django 框架模型操作入门教程
2019/11/05 Python
大四学生毕业自荐信
2013/11/07 职场文书
3.12植树节活动总结2014
2014/03/13 职场文书
培训研修方案
2014/06/06 职场文书
会计岗位职责
2015/02/03 职场文书
公务员爱岗敬业心得体会
2016/01/25 职场文书
python3实现无权最短路径的方法
2021/05/12 Python
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS