LeetCode - 007 - 整数反转(reverse-integer)

栏目: 编程工具 · 发布时间: 5年前

内容简介:Create byRecently revised inHello 小伙伴们,如果觉得本文还不错,记得给个star, 小伙伴们的star是我持续更新的动力!

Create by jsliang on 2019-05-19 09:42:39

Recently revised in 2019-05-19 16:08:24

Hello 小伙伴们,如果觉得本文还不错,记得给个star, 小伙伴们的star是我持续更新的动力! GitHub 地址

一 目录

不折腾的前端,和咸鱼有什么区别

目录

二 前言

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:

输入: 123
输出: 321
 示例 2:

输入: -123
输出: -321
示例 3:

输入: 120
输出: 21
注意:

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
复制代码

三 解题

解题千千万,官方独一家,上面是官方使用 C++ / Java 进行的题解。

小伙伴可以先自己在本地尝试解题,再看看官方解题,最后再回来看看 jsliang 讲解下使用 JavaScript 的解题思路。

3.1 解法 - 转字符串

  • 解题代码
var reverse = function(x) {
  // 转数组
  let numberToArray = String(Math.abs(x)).split('');
  
  // 转字符串
  let result = '';
  for (const i = 0; i < numberToArray.length; ) {
    result += numberToArray.pop();
  }
  result = x > 0 ? Number(result) : - Number(result);
  
  // 超 [-Math.pow(2, 31), Math.pow(2, 31) - 1] 判断
  if (result > Math.pow(2, 31) - 1
  || result < - Math.pow(2, 31)) {
    result = 0;
  }
  
  return result;
};
复制代码
  • 执行测试
  1. x-1234
  2. return
-4321
复制代码
  • LeetCode Submit
✔ Accepted
  ✔ 1032/1032 cases passed (88 ms)
  ✔ Your runtime beats 99.53 % of javascript submissions
  ✔ Your memory usage beats 46.01 % of javascript submissions (35.8 MB)
复制代码
  • 知识点
  1. String :将其他值转成字符串。 String 详细介绍
  2. Number :将其他值转成数字值。 Number 详细介绍
  3. pop()pop() 方法从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。 pop() 详细介绍
  4. Math :JS 中的内置对象,具有数学常数和函数的属性和方法。 Math 详细介绍
  • 解题思路
LeetCode - 007 - 整数反转(reverse-integer)

首先,将传入的数字 x 转换成字符串,并分割成数组。

然后,遍历该数组,将最后一个取出来放到 result 中。

最后,判断这个 result 是否超过题目限制,如果超过则变成 0 。

  • 进一步思考

3.2 解法 - 数学算法

  • 解题代码
var reverse = function(x) {
  let result = 0;
  let y = Math.abs(x);
  while (y != 0) {
    result = result * 10 + y % 10;
    y = Math.floor(y / 10);
    if (result > Math.pow(2, 31) - 1
    || result < -Math.pow(2, 31)) {
      result = 0;
      y = 0;
    }
  }
  return x > 0 ? result : -result;
};
复制代码
  • 执行测试
  1. x-1234
  2. return
-4321
复制代码
  • LeetCode Submit
✔ Accepted
  ✔ 1032/1032 cases passed (108 ms)
  ✔ Your runtime beats 97.4 % of javascript submissions
  ✔ Your memory usage beats 23.63 % of javascript submissions (36 MB)
复制代码
  • 知识点
  1. Math :JS 中的内置对象,具有数学常数和函数的属性和方法。 Math 详细介绍
  • 解题思路
LeetCode - 007 - 整数反转(reverse-integer)

首先,我们初始化数值。

然后,我们需要知道的是,一个数对 10 取余,可以得到这个数的个位数;一个数乘于 10 并加上一个个位数,可以将这个数字放到末尾。

最后,我们判断一开始传入的数值正负,再返回对应结果即可。

jsliang广告推送:

也许小伙伴想了解下云服务器

或者小伙伴想买一台云服务器

或者小伙伴需要续费云服务器

欢迎点击 云服务器推广 查看!

LeetCode - 007 - 整数反转(reverse-integer)
LeetCode - 007 - 整数反转(reverse-integer)

LeetCode - 007 - 整数反转(reverse-integer)

jsliang 的文档库梁峻荣 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议 进行许可。

基于 github.com/LiangJunron… 上的作品创作。

本许可协议授权之外的使用权限可以从 creativecommons.org/licenses/by… 处获得。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Think Python

Think Python

Allen B. Downey / O'Reilly Media / 2012-8-23 / GBP 29.99

Think Python is an introduction to Python programming for students with no programming experience. It starts with the most basic concepts of programming, and is carefully designed to define all terms ......一起来看看 《Think Python》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

html转js在线工具
html转js在线工具

html转js在线工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具