热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

js数组倒序_我用JS刷LeetCode|Day6|PalindromeNumber

来公众号「九零后重庆崽儿」,我们一起学前端回文数:说明:现阶段的解题暂未考虑复杂度问题首发地址:我用JS刷LeetCode|Day6|Pa

a8d7a1581fb00f95c016fccc67410706.png

来公众号「九零后重庆崽儿」,我们一起学前端

回文数:

说明:现阶段的解题暂未考虑复杂度问题

首发地址:

我用JS刷LeetCode | Day 6 | Palindrome Number​www.brandhuang.com

Question:

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

Coud you solve it without converting the integer to a string?

中文题目:

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

注意:

你能不将整数转为字符串来解决这个问题吗?

Example:

Input: 121
Output: trueInput: -121
Output: falseInput: 10
Output: false

个人分析:

  1. 看到题目「回文数字」,我们第一反应很有可能就是将数字先转成字符串然后转成数组,最后利用数组的 reverse 方法进行倒序,然后转换成数字来判断原数字新数字是否相等即可,即 答案一
  2. 我们可以分析下回文数的特点可以发现,他是一个对称结构的数,所以从两端向中间遍历,如果遍历出的两个字符不相等,则说明不是回文数,直接返回 false,,否则一直遍历到从两端遍历的交叉点为止。所以有了答案二
  3. 但是,题目最后还有个问题:「你能不将整数转为字符串来解决这个问题吗?」
  4. 不转成字符串的方法我没有做出来!,看了大神们的答案后简单分析下 答案三
  5. 主要思路就是把数字翻过了,然后和输入值进行比较,如果相等,则是回文数,否则不是回文数。
  6. 声明一个 s变量来存输入的 x,声明一个 rev变量来存输入的数字的个位数。
  7. 当把输入值的个位数移到变量 rev 中后,输入值的位数少了一位,所以有新的 s 值变成了 s / 10Math.floor(s / 10) 是取整方便计算。
  8. rev 的值每次循环都会增加一位,所以新的 rev 变成了 上一步中的 rev 乘以 10然后加上这一步中的 s的个位数
  9. 直到 s 变为 0 时循环停止,此时比较原输入值和倒序后的值,若相等,则是回文数,否则不是回文数
  10. 得出答案三

Answer:

一、答案一

var isPalindrome = function(x) {return x === Number(x.toString().split('').reverse().join(''))
};

二、答案二

var isPalindrome = function(x) {let xStr = x.toString()let i = 0; // 头部let j = xStr.length - 1 // 尾部while(i };

三、答案三

var isPalindrome = function(x) {let s = x;let rev = 0while (s > 0) {rev = rev * 10 + s % 10s = Math.floor(s / 10)}return x === rev
};

其他:

本题更多 Javascript 解析,点击链接访问对应的答案:https://leetcode.com



推荐阅读
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有